form = "core-newspost-create-form"; // form id of the form that will have it's values saved. $pst->page = "newspost.php?create"; // display preset options on which page(s). $pst->id = "admin_newspost"; // ------------------------------ // done in class2: require_once(e_LANGUAGEDIR.e_LANGUAGE."/admin/lan_admin.php"); // maybe this should be put in class2.php when 'admin' is detected. $newspost = new admin_newspost(e_QUERY, $pst); e107::setRegistry('_newspost_admin', $newspost); $gen = new convert(); //Handle Ajax Calls if($newspost->ajax_observer()) exit; function headerjs() { $newspost = e107::getRegistry('_newspost_admin'); /* $ret .= ""; */ // TODO - move this to external JS when news becomes a plugin $ret .= " "; e107::getJs()->requireCoreLib('core/admin.js'); if($newspost->getAction() == 'cat') { $ret .= " "; } elseif ($newspost->getAction() == 'pref') { $ret .= " "; } $ret .= $newspost->_cal->load_files(); return $ret; } $e_sub_cat = 'news'; require_once('auth.php'); /* * Observe for delete action */ $newspost->observer(); /* * Show requested page */ $newspost->show_page(); /* OLD JS? Can't find references to this func echo " \n"; */ require_once("footer.php"); exit; // FIXME - advanced filter, ready to be chunked, cleaned up and pluginized some day... class admin_newspost { var $_request = array(); var $_cal = array(); var $_pst; var $_fields; var $_sort_order; var $_sort_link; var $fieldpref; var $news_categories; var $news_renderTypes = array(); public $error = false; function __construct($qry, $pstobj) { 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); $this->_pst = $pstobj; $this->fieldpref = varset($user_pref['admin_news_columns'], array('news_id', 'news_title', 'news_author', 'news_render_type', 'options')); $this->fields = array( 'checkboxes' => array('title' => '', 'type' => null, 'width' => '3%', 'thclass' => 'center first', 'class' => 'center', 'nosort' => true, 'toggle' => 'news_selected', 'forced' => TRUE), 'news_id' => array('title' => LAN_NEWS_45, 'type' => 'number', 'width' => '5%', 'thclass' => 'center', 'class' => 'center', 'nosort' => false), 'news_title' => array('title' => NWSLAN_40, 'type' => 'text', 'width' => 'auto', 'thclass' => '', 'class' => null, 'nosort' => false), 'news_rewrite_string' => array('title' => 'SEF URL', 'type' => 'text', 'width' => 'auto', 'thclass' => '', 'class' => null, 'nosort' => false), 'user_name' => array('title' => LAN_NEWS_50, 'type' => 'text', 'width' => 'auto', 'thclass' => '', 'class' => null, 'nosort' => false), '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' => '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), 'news_comment_total' => array('title' => LAN_NEWS_60, 'type' => 'number', 'width' => '10%', 'thclass' => '', 'class' => null, 'nosort' => false), 'options' => array('title' => LAN_OPTIONS, 'type' => null, 'width' => '10%', 'thclass' => 'center last', 'class' => 'center', 'nosort' => true, 'forced' => TRUE) ); /* $ren_type = array(NWSLAN_75,NWSLAN_76,NWSLAN_77,NWSLAN_77." 2"); $r_array = array(); foreach($ren_type as $key=>$value) { $this->news_renderTypes[$key] = $value; }*/ $this->news_renderTypes = array(NWSLAN_75,NWSLAN_76,NWSLAN_77,NWSLAN_77." 2"); } function parseRequest($qry) { $tmp = explode(".", $qry); $action = varsettrue($tmp[0], 'main'); $sub_action = varset($tmp[1], ''); $id = isset($tmp[2]) && is_numeric($tmp[2]) ? intval($tmp[2]) : 0; $this->_sort_order = isset($tmp[2]) && !is_numeric($tmp[2]) ? $tmp[2] : 'desc'; $from = intval(varset($tmp[3],0)); unset($tmp); if ($this->_sort_order != 'asc') $this->_sort_order = 'desc'; $this->_sort_link = ($this->_sort_order) == 'asc' ? 'desc' : 'asc'; $this->_request = array($action, $sub_action, $id, $sort_order, $from); } function getAction() { return $this->_request[0]; } /** * @param string $action * @return admin_newspost */ function setAction($action) { $this->_request[0] = $action; return $this; } function getSubAction() { return $this->_request[1]; } /** * @param string $action * @return admin_newspost */ function setSubAction($action) { $this->_request[1] = $action; return $this; } function getId() { return $this->_request[2]; } /** * @param integer $id * @return admin_newspost */ function setId($id) { $this->_request[2] = intval($id); return $this; } function getSortOrder() { return $this->_request[3]; } function getFrom() { return $this->_request[4]; } function clear_cache() { $ecache = e107::getCache(); $ecache->clear("news.php"); //TODO change it to 'news_*' everywhere $ecache->clear("news_", false, true); //NEW global news cache prefix //$ecache->clear("nq_news_"); - supported by cache::clear() now //$ecache->clear("nomd5_news_"); supported by cache::clear() now $ecache->clear("othernews"); //TODO change it to 'news_othernews' everywhere $ecache->clear("othernews2"); //TODO change it to 'news_othernews2' everywhere 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() { $method = 'ajax_exec_'.$this->getAction(); if(e_AJAX_REQUEST && method_exists($this, $method)) { $this->$method(); return true; } return false; } function observer() { e107::getDb()->db_Mark_Time('News Administration'); $this->news_categories = array(); if(e107::getDb()->db_Select('news_category', '*', (getperms('0') ? '' : 'category_manager IN ('.USERCLASS_LIST.')'))) { $this->news_categories = e107::getDb()->db_getList('ALL', FALSE, FALSE, 'category_id'); } //Required on create & savepreset action triggers if(isset($_POST['news_userclass']) && is_array($_POST['news_userclass'])) { $_POST['news_class'] = implode(",", $_POST['news_userclass']); unset($_POST['news_userclass']); } $main = getperms('0'); if(isset($_POST['delete']) && is_array($_POST['delete'])) { $this->_observe_delete(); } elseif(isset($_POST['execute_batch'])) { $this->process_batch($_POST['news_selected']); } elseif(isset($_POST['submit_news'])) { $this->_observe_submit_item($this->getSubAction(), $this->getId()); } elseif($main && isset($_POST['create_category'])) { $this->_observe_create_category(); } elseif($main && isset($_POST['update_category'])) { $this->_observe_update_category(); } elseif($main && isset($_POST['multi_update_category'])) { $this->_observe_multi_create_category(); } elseif($main && isset($_POST['save_prefs'])) { $this->_observe_save_prefs(); } elseif(isset($_POST['submitupload'])) { $this->_observe_upload(); } elseif(isset($_POST['news_comments_recalc'])) { $this->_observe_newsCommentsRecalc(); } if(isset($_POST['etrigger_ecolumns'])) //elseif fails. { $this->_observe_saveColumns(); } } function show_page() { // print_a($POST); switch ($this->getAction()) { case 'savepreset': case 'clr_preset': $this->_pst->save_preset('news_datestamp', false); // save and render result using unique name. Don't save item datestamp $_POST = array(); $this->parseRequest(''); $this->show_existing_items(); break; case 'create': $this->_pst->read_preset('admin_newspost'); //only works here because $_POST is used. $this->show_create_item(); break; case 'cat': if(!getperms('0|7')) { $this->noPermissions(); } $this->show_categories(); break; case 'sn': $this->show_submitted_news(); break; case 'pref': if(!getperms('0')) { $this->noPermissions(); } $this->show_news_prefs(); break; case 'maint' : if(!getperms('0')) { $this->noPermissions(); } $this->showMaintenance(); break; default: $this->show_existing_items(); break; } } 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(); switch ($delete) { case 'main': if ($e107->sql->db_Count('news','(*)',"WHERE news_id={$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,''); $this->show_message(NWSLAN_31." #".$del_id." ".NWSLAN_32, E_MESSAGE_SUCCESS); $this->clear_cache(); $data = array('method'=>'delete', 'table'=>'news', 'id'=>$del_id, 'plugin'=>'news', 'function'=>'delete'); $this->show_message(e107::getEvent()->triggerHook($data), E_MESSAGE_WARNING); admin_purge_related("news", $del_id); } } break; case 'category': if(!getperms('0|7')) $this->noPermissions(); 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(); } break; default: return false; } return true; } function _observe_submit_item($sub_action, $id) { // ##### Format and submit item to DB $ix = new news; if($_POST['news_start']) { $tmp = explode("/", $_POST['news_start']); $_POST['news_start'] = mktime(0, 0, 0, $tmp[1], $tmp[0], $tmp[2]); } else { $_POST['news_start'] = 0; } if($_POST['news_end']) { $tmp = explode("/", $_POST['news_end']); $_POST['news_end'] = mktime(0, 0, 0, $tmp[1], $tmp[0], $tmp[2]); } else { $_POST['news_end'] = 0; } $matches = array(); if(preg_match('#(.*?)/(.*?)/(.*?) (.*?):(.*?):(.*?)$#', $_POST['news_datestamp'], $matches)) { $_POST['news_datestamp'] = mktime($matches[4], $matches[5], $matches[6], $matches[2], $matches[1], $matches[3]); } else { $_POST['news_datestamp'] = time(); } if($_POST['update_datestamp']) { $_POST['news_datestamp'] = time(); } if ($id && $sub_action != "sn" && $sub_action != "upload") { $_POST['news_id'] = $id; } else { e107::getDb()->db_Update('submitnews', "submitnews_auth=1 WHERE submitnews_id ={$id}"); e107::getAdminLog()->log_event('NEWS_07', $id, E_LOG_INFORMATIVE,''); } if (!isset($_POST['cat_id'])) { $_POST['cat_id'] = 0; } $_POST['news_category'] = $_POST['cat_id']; if(!isset($this->news_categories[$_POST['news_category']])) { $this->noPermissions(); } /*if(isset($_POST['news_thumbnail'])) { $_POST['news_thumbnail'] = urldecode(basename($_POST['news_thumbnail'])); }*/ $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']) { 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'])) { if($this->getSubAction() != 'edit') { session_write_close(); $rurl = e_SELF.(varsettrue($ret['id']) ? "?create.edit.".$ret['id'] : ''); header('Location:'.($rurl ? $rurl : e_SELF)); exit; } } else { session_write_close(); header('Location:'.e_SELF); exit; } } function _observe_create_category() { if(!getperms('0|7')) { $this->noPermissions(); } //FIXME - lan, e_model based news administration model $this->error = false; if(empty($_POST['category_name'])) { $this->show_message('Validation Error: Missing Category name', E_MESSAGE_ERROR); $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) { $inserta = array(); /* Why? Categoty Icon is not required field if (empty($_POST['category_icon'])) { $handle = opendir(e_IMAGE."icons"); while ($file = readdir($handle)) { if ($file != "." && $file != ".." && $file != "/" && $file != "null.txt" && $file != "CVS") { $iconlist[] = $file; } } closedir($handle); $inserta['category_icon'] = $iconlist[0]; } else { $inserta['category_icon'] = e107::getParser()->toDB($_POST['category_icon']); }*/ $inserta['data']['category_icon'] = $_POST['category_icon']; $inserta['_FIELD_TYPES']['category_icon'] = 'todb'; $inserta['data']['category_name'] = $_POST['category_name']; $inserta['_FIELD_TYPES']['category_name'] = 'todb'; $inserta['data']['category_meta_description'] = strip_tags($_POST['category_meta_description']); $inserta['_FIELD_TYPES']['category_meta_description'] = 'str'; $inserta['data']['category_meta_keywords'] = $_POST['category_meta_keywords']; $inserta['_FIELD_TYPES']['category_meta_keywords'] = 'str'; $inserta['data']['category_manager'] = $_POST['category_manager']; $inserta['_FIELD_TYPES']['category_manager'] = 'int'; $inserta['data']['category_order'] = $_POST['category_order']; $inserta['_FIELD_TYPES']['category_order'] = 'int'; //e107::getDb()->db_Insert('news_category', "'0', '{$_POST['category_name']}', '{$_POST['category_icon']}'"); $id = e107::getDb()->db_Insert('news_category', $inserta); if($id) { $inserta['data']['category_id'] = $id; //admin log now supports DB array and method chaining e107::getAdminLog()->log_event('NEWS_04', $inserta, E_LOG_INFORMATIVE, ''); $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()->getLastErrorNumber()) { $this->error = true; $this->show_message('mySQL Error detected!', E_MESSAGE_ERROR); eMessage::getInstance()->addS('mySQL error #'.e107::getDb()->getLastErrorNumber().': '.e107::getDb()->getLastErrorText(), E_MESSAGE_DEBUG); } } } } function _observe_update_category() { if(!getperms('0|7')) { $this->noPermissions(); } $this->setId(intval($_POST['category_id'])); if(!$this->getId()) { return; } //FIXME - lan, e_model based news administration model $this->error = false; if(empty($_POST['category_name'])) { $this->show_message('Validation Error: Missing Category name', E_MESSAGE_ERROR); $this->error = true; } if (!$this->error) { $updatea = array(); $updatea['data']['category_icon'] = $_POST['category_icon']; $updatea['_FIELD_TYPES']['category_icon'] = 'todb'; $updatea['data']['category_name'] = $_POST['category_name']; $updatea['_FIELD_TYPES']['category_name'] = 'todb'; $updatea['data']['category_meta_description'] = strip_tags($_POST['category_meta_description']); $updatea['_FIELD_TYPES']['category_meta_description'] = 'str'; $updatea['data']['category_meta_keywords'] = $_POST['category_meta_keywords']; $updatea['_FIELD_TYPES']['category_meta_keywords'] = 'str'; $updatea['data']['category_manager'] = $_POST['category_manager']; $updatea['_FIELD_TYPES']['category_manager'] = 'int'; $updatea['data']['category_order'] = $_POST['category_order']; $updatea['_FIELD_TYPES']['category_order'] = 'int'; $updatea['WHERE'] = 'category_id='.$this->getId(); $inserta = array(); $rid = 0; $upcheck = e107::getDb()->db_Update("news_category", $updatea); $rwupcheck = false; if($upcheck || !e107::getDb()->getLastErrorNumber()) { if ($upcheck || $rwupcheck) { //admin log now supports DB array and method chaining $updatea['data']['category_id'] = $this->getId(); if($upcheck) e107::getAdminLog()->log_event('NEWS_05', $updatea['data'], E_LOG_INFORMATIVE, ''); if($rwupcheck && $inserta['data']) e107::getAdminLog()->log_event('NEWS_10', $inserta['data'], E_LOG_INFORMATIVE, ''); $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 { $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() { if(!getperms('0|7')) { $this->noPermissions(); } $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() { if(!getperms('0')) { $this->noPermissions(); } $temp = array(); $temp['newsposts'] = intval($_POST['newsposts']); $temp['newsposts_archive'] = intval($_POST['newsposts_archive']); $temp['newsposts_archive_title'] = e107::getParser()->toDB($_POST['newsposts_archive_title']); $temp['news_cats'] = intval($_POST['news_cats']); $temp['nbr_cols'] = intval($_POST['nbr_cols']); $temp['subnews_attach'] = intval($_POST['subnews_attach']); $temp['subnews_resize'] = intval($_POST['subnews_resize']); $temp['subnews_class'] = intval($_POST['subnews_class']); $temp['subnews_htmlarea'] = intval($_POST['subnews_htmlarea']); $temp['news_subheader'] = e107::getParser()->toDB($_POST['news_subheader']); $temp['news_newdateheader'] = intval($_POST['news_newdateheader']); $temp['news_unstemplate'] = intval($_POST['news_unstemplate']); $temp['news_editauthor'] = intval($_POST['news_editauthor']); $temp['news_sefbase'] = preg_replace('#[^\w\pL\-]#u', '', $_POST['news_sefbase']); e107::getConfig()->updatePref($temp); if(e107::getConfig()->save(false)) { e107::getAdminLog()->logArrayDiffs($temp, e107::getPref(), 'NEWS_06'); $this->clear_cache(); //$this->show_message(NWSLAN_119, E_MESSAGE_SUCCESS); } } function _observe_upload() { //$pref['upload_storagetype'] = "1"; require_once(e_HANDLER."upload_handler.php"); $uploaded = file_upload(e_NEWSIMAGE); foreach($_POST['uploadtype'] as $key=>$uploadtype) { if($uploadtype == "thumb") { rename(e_NEWSIMAGE.$uploaded[$key]['name'],e_NEWSIMAGE."thumb_".$uploaded[$key]['name']); } if($uploadtype == "file") { rename(e_NEWSIMAGE.$uploaded[$key]['name'],e_DOWNLOAD.$uploaded[$key]['name']); } if ($uploadtype == "resize" && $_POST['resize_value']) { require_once(e_HANDLER."resize_handler.php"); resize_image(e_NEWSIMAGE.$uploaded[$key]['name'], e_NEWSIMAGE.$uploaded[$key]['name'], $_POST['resize_value'], "copy"); } } } function _observe_saveColumns() { global $user_pref,$admin_log; $user_pref['admin_news_columns'] = $_POST['e-columns']; save_prefs('user'); $this->fieldpref = $user_pref['admin_news_columns']; } function show_existing_items() { global $user_pref,$gen; if(!getperms('H')) { return; } require_once(e_HANDLER."form_handler.php"); $frm = new e_form(true); //enable inner tabindex counter // Effectively toggle setting for headings $amount = 10;//TODO - pref if(!is_array($user_pref['admin_news_columns'])) { $user_pref['admin_news_columns'] = array("news_id","news_title","news_author","news_render_type"); } $field_columns = $this->fields; $e107 = e107::getInstance(); // ------ Search Filter ------ $text .= "
"; $text .= $frm->admin_button('searchsubmit', NWSLAN_63, 'search'); $text .= "
"; // -------------------------------------------- $query = " SELECT n.*, nc.*, u.user_name, u.user_id FROM #news AS n LEFT JOIN #news_category AS nc ON n.news_category=nc.category_id LEFT JOIN #user AS u ON n.news_author=u.user_id "; $check_perms = !getperms('0') ? " nc.category_manager IN (".USERCLASS_LIST.") " : ''; if (vartrue($_POST['searchquery'])) { $query .= "WHERE {$check_perms}n.news_title REGEXP('".$_POST['searchquery']."') OR n.news_body REGEXP('".$_POST['searchquery']."') OR n.news_extended REGEXP('".$_POST['searchquery']."') ORDER BY n.news_datestamp DESC"; } else { $ordfield = 'n.news_datestamp'; if($this->getSubAction() == 'user_name') { $ordfield = "u.user_name"; } elseif(strpos($this->getSubAction(), 'category_')) { $ordfield = 'nc.'.$this->getSubAction(); } elseif($this->getSubAction()) { $ordfield = 'n.'.$this->getSubAction(); } $query .= ($check_perms ? "WHERE {$check_perms}" : '')."ORDER BY {$ordfield} ".strtoupper($this->_sort_order)." LIMIT ".$this->getFrom().", {$amount}"; } if ($e107->sql->db_Select_gen($query)) { $newsarray = $e107->sql->db_getList(); $text .= "
".NWSLAN_4." ".$frm->colGroup($this->fields, $this->fieldpref)." ".$frm->thead($this->fields, $this->fieldpref, 'main.[FIELD].[ASC].[FROM]')." "; $ren_type = array("default","title","other-news","other-news 2"); // Shortened foreach($newsarray as $row) { // PREPARE SOME DATA // safe to pass $row as it contains username and id only (no sensitive data), user_id and user_name will be internal converted to 'id', 'name' vars $row['user_name'] = "{$row['user_name']}"; $row['news_thumbnail'] = ($row['news_thumbnail'] && is_readable(e_NEWSIMAGE.$row['news_thumbnail'])) ? "".e107::getParser()->text_truncate($row['news_thumbnail'], 20, '...')."" : ""; $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']; // AUTO RENDER $text .= $frm->renderTableRow($this->fields, $this->fieldpref, $row, 'news_id'); } $text .= "
"; $text .= "
".$this->show_batch_options()."
"; $text .= "
"; } else { $tmp = NWSLAN_43; if(vartrue($_POST['searchquery'])) { $tmp = sprintf(NWSLAN_121, '"'.$_POST['searchquery'])."" « ".LAN_BACK.""; } $text = "
{$tmp}
"; } $newsposts = $e107->sql->db_Count('news'); if (!vartrue($_POST['searchquery'])) { $parms = $newsposts.",".$amount.",".$this->getFrom().",".e_SELF."?".$this->getAction().'.'.($this->getSubAction() ? $this->getSubAction() : 0).'.'.$this->_sort_order.".[FROM]"; $nextprev = $e107->tp->parseTemplate("{NEXTPREV={$parms}}"); if ($nextprev) $text .= "
".$nextprev."
"; } e107::getRender()->tablerender(NWSLAN_4, e107::getMessage()->render().$text); } function show_batch_options() { $classes = e107::getUserClass()->uc_get_classlist(); // Grab news Category Names; e107::getDb()->db_Select('news_category', '*'); $newscatarray = e107::getDb()->db_getList(); $news_category = $news_manage = array(); foreach($newscatarray as $val) { $news_category[$val['category_id']] = $val['category_name']; $news_manage[$val['category_id']] = $val['category_manager']; } $comments_array = array('Allow Comments', 'Disable Comments', 'Reverse Allow/Disalow'); $sticky_array = array(1 => 'Sticky', 0 => 'Not Sticky', 2 => 'Reverse Them'); // more proper controls order return e107::getForm()->batchoptions( array( 'delete_selected' => LAN_DELETE, 'category' => array('Modify Category', $news_category), 'sticky_selected' => array('Modify Sticky', $sticky_array), 'rendertype' => array('Modify Render-type', $this->news_renderTypes), 'comments' => array('Modify Comments', $comments_array), '__check_class' => array('category' => $news_manage) ), array( 'userclass' => array('Assign Visibility...',$classes), ) ); } function batch_category($ids, $value) { if(!isset($this->news_categories[$value])) { $this->noPermissions(); } $sql = e107::getDb(); $count = $sql->db_Update("news","news_category = ".$value." WHERE news_id IN (".implode(",",$ids).") "); } function batch_comments($ids, $value) { $sql = e107::getDb(); $value = intval($value); if(2 === $value) //reverse it { $count = $sql->db_Update("news","news_allow_comments=1-news_allow_comments WHERE news_id IN (".implode(",",$ids).") "); } else //set it { $count = $sql->db_Update("news","news_allow_comments=".$value." WHERE news_id IN (".implode(",",$ids).") "); } } function batch_rendertype($ids, $value) { $sql = e107::getDb(); $count = $sql->db_Update("news","news_render_type = ".$value." WHERE news_id IN (".implode(",",$ids).") "); } function batch_userclass($ids, $value) { $sql = e107::getDb(); $count = $sql->db_Update("news","news_class = ".$value." WHERE news_id IN (".implode(",",$ids).") "); } function batch_delete($ids, $value) { $sql = e107::getDb(); $count = $sql->db_Delete("news","news_id IN (".implode(",",$ids).") "); } function batch_subdelete($ids, $value) { $sql = e107::getDb(); $count = $sql->db_Delete("submitnews","submitnews_id IN (".implode(",",$ids).") "); } function batch_subcategory($ids, $value) { if(!isset($this->news_categories[$value])) { $this->noPermissions(); } $sql = e107::getDb(); $count = $sql->db_Update("submitnews","submitnews_category = ".$value." WHERE submitnews_id IN (".implode(",",$ids).") "); } function batch_sticky($ids, $value) { $sql = e107::getDb(); $value = intval($value); if(2 === $value) //reverse it { $count = $sql->db_Update("news","news_sticky=1-news_sticky WHERE news_id IN (".implode(",",$ids).") "); } else //set it { $count = $sql->db_Update("news","news_sticky=".$value." WHERE news_id IN (".implode(",",$ids).") "); } } function process_batch($id_array) { list($type, $tmp, $value) = explode("_",$_POST['execute_batch']); $method = "batch_".$type; if (method_exists($this,$method) && isset($id_array) ) { $this->$method($id_array,$value); } } function _pre_create() { if($this->getSubAction() == "edit" && !$_POST['preview']) { if(!isset($_POST['submit_news'])) { if(e107::getDb()->db_Select('news', '*', 'news_id='.intval($this->getId()))) { $row = e107::getDb()->db_Fetch(); if(!isset($this->news_categories[$row['news_category']])) { $this->noPermissions(); } $_POST['news_title'] = $row['news_title']; $_POST['news_body'] = $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_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']; } } } } function show_create_item() { global $pref; $this->_pre_create(); require_once(e_HANDLER."userclass_class.php"); require_once(e_HANDLER."form_handler.php"); $frm = new e_form(true); //enable inner tabindex counter $text = ''; if (isset($_POST['preview'])) { $text = $this->preview_item($this->getId()); } $sub_action = $this->getSubAction(); $id = $this->getSubAction() != 'sn' && $this->getSubAction() != 'upload' ? $this->getId() : 0; $e107 = e107::getInstance(); $tp = e107::getParser(); $sql = e107::getDb(); if ($sub_action == "sn" && !varset($_POST['preview'])) { if ($sql->db_Select("submitnews", "*", "submitnews_id=".$this->getId(), TRUE)) { //list($id, $submitnews_name, $submitnews_email, $_POST['news_title'], $submitnews_category, $_POST['news_body'], $submitnews_datestamp, $submitnews_ip, $submitnews_auth, $submitnews_file) = $sql->db_Fetch(); $row = $sql->db_Fetch(); $_POST['news_title'] = $row['submitnews_title']; $_POST['news_body'] = $row['submitnews_item']; $_POST['cat_id'] = $row['submitnews_category']; if (defsettrue('e_WYSIWYG')) { if (substr($_POST['news_body'],-7,7) == '[/html]') $_POST['news_body'] = substr($_POST['news_body'],0,-7); if (substr($_POST['news_body'],0,6) == '[html]') $_POST['news_body'] = substr($_POST['news_body'],6); $_POST['news_body'] .= "
".NWSLAN_49." {$row['submitnews_name']}"; $_POST['news_body'] .= ($row['submitnews_file'])? "

": ''; } else { $_POST['news_body'] .= "\n[[b]".NWSLAN_49." {$row['submitnews_name']}[/b]]"; $_POST['news_body'] .= ($row['submitnews_file'])?"\n\n[img]{e_NEWSIMAGE}{$row['submitnews_file']}[/img]": ""; } $_POST['data'] = $tp->dataFilter($_POST['data']); // Filter any nasties $_POST['news_title'] = $tp->dataFilter($_POST['news_title']); } } if ($sub_action == "upload" && !varset($_POST['preview'])) { 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(); //XXX DB UPLOADS STILL SUPPORTED? $upload_file = "pub_" . (preg_match('#Binary\s(.*?)\/#', $row['upload_file'], $match) ? $match[1] : $row['upload_file']); $_POST['news_title'] = LAN_UPLOAD.": ".$row['upload_name']; $_POST['news_body'] = $row['upload_description']."\n[b]".NWSLAN_49." [link=".$e107->url->create('user/profile/view', 'id='.$post_author_id.'&name='.$post_author_name)."]".$post_author_name."[/link][/b]\n\n[file=request.php?".$upload_file."]{$row['upload_name']}[/file]\n"; } } $text .= "
".LAN_NEWS_52." "; // -------- News Author --------------------- $text .="
".NWSLAN_6.": "; if (!$this->news_categories) { $text .= NWSLAN_10; } else { $text .= " ".$frm->select_open('cat_id')." "; foreach ($this->news_categories as $row) { $text .= $frm->option($tp->toHTML($row['category_name'], FALSE, "LINKTEXT"), $row['category_id'], varset($_POST['cat_id']) == $row['category_id']); } $text .= " "; } $text .= "
".NWSLAN_12.": ".$frm->text('news_title', $tp->post_toForm($_POST['news_title']))."
".LAN_NEWS_27.": ".$frm->text('news_summary', $tp->post_toForm($_POST['news_summary']), 250)."
".LAN_NEWS_50.": "; if(!getperms('0') && !check_class($pref['news_editauthor'])) { $auth = ($_POST['news_author']) ? intval($_POST['news_author']) : USERID; $e107->sql->db_Select("user", "user_name", "user_id={$auth} LIMIT 1"); $row = $e107->sql->db_Fetch(MYSQL_ASSOC); $text .= ""; $text .= "".$row['user_name'].""; } else // allow master admin to { $text .= $frm->select_open('news_author'); $qry = "SELECT user_id,user_name FROM #user WHERE user_perms = '0' OR user_perms = '0.' OR user_perms REGEXP('(^|,)(H)(,|$)') "; if($pref['subnews_class'] && $pref['subnews_class']!= e_UC_GUEST && $pref['subnews_class']!= e_UC_NOBODY) { if($pref['subnews_class']== e_UC_MEMBER) { $qry .= " OR user_ban != 1"; } elseif($pref['subnews_class']== e_UC_ADMIN) { $qry .= " OR user_admin = 1"; } else { $qry .= " OR FIND_IN_SET(".intval($pref['subnews_class']).", user_class) "; } } $sql->db_Select_gen($qry); while($row = $sql->db_Fetch()) { if($_POST['news_author']) { $sel = ($_POST['news_author'] == $row['user_id']); } else { $sel = (USERID == $row['user_id']); } $text .= $frm->option($row['user_name'], $row['user_id'].chr(35).$row['user_name'], $sel); } $text .= " "; } $text .= "
".NWSLAN_13.":
"; $val = (strstr($tp->post_toForm($_POST['news_body']), "[img]http") ? $tp->post_toForm($_POST['news_body']) : str_replace("[img]../", "[img]", $tp->post_toForm($_POST['news_body']))); $text .= $frm->bbarea('news_body', $val, 'news', 'helpb'); // Extended news form textarea // Fixes Firefox issue with hidden wysiwyg textarea. // XXX - WYSIWYG is already plugin, this should go // if(defsettrue('e_WYSIWYG')) $ff_expand = "tinyMCE.execCommand('mceResetDesignMode')"; $val = (strstr($tp->post_toForm($_POST['news_extended']), "[img]http") ? $tp->post_toForm($_POST['news_extended']) : str_replace("[img]../", "[img]", $tp->post_toForm($_POST['news_extended']))); $text .= "
".NWSLAN_14.": ".$frm->bbarea('news_extended', $val, 'extended', 'helpc')."
".NWSLAN_66.": "; $text .= $frm->mediaUrl('news', NWSLAN_69); /* //FIXME - below is a quick fix for media-manager upload. Requires popup window without header/footer. $text .= "".NWSLAN_69.""; // FIXME - make it system wide available e107::getJs()->requireCoreLib('core/admin.js') ->requireCoreLib('core/dialog.js') ->requireCoreLib('core/draggable.js') ->coreCSS('core/dialog/dialog.css') ->coreCSS('core/dialog/e107/e107.css') ->footerInline(' $$("a.e-dialog").invoke("observe", "click", function(ev) { var element = ev.findElement("a"); ev.stop(); new e107Widgets.URLDialog(element.href + "&iframe=1", { id: element["id"] || "e-dialog", width: 800, height: 600, title: "Media Manager" }).center().activate().show(); }); ');*/ // e_NEWSIMAGE is deprecated. // DEPRECATED METHOD below. /*$text .= "".NWSLAN_69."
"; if (!FILE_UPLOADS) { $text .= "".LAN_UPLOAD_SERVEROFF.""; } else { if (!is_writable(e_DOWNLOAD)) { $text .= LAN_UPLOAD_777."".str_replace("../","",e_DOWNLOAD)."

"; } if (!is_writable(e_NEWSIMAGE)) { $text .= LAN_UPLOAD_777."".str_replace("../","",e_NEWSIMAGE)."

"; } $up_name = array(LAN_NEWS_24, NWSLAN_67, LAN_NEWS_22, NWSLAN_68); $up_value = array("resize", "image", "thumb", "file"); $text .= "
".$frm->admin_button('dupfield', LAN_NEWS_26, 'action', '', array('other' => 'onclick="duplicateHTML(\'upline\',\'up_container\');"'))."
".$frm->file('file_userfile[]')." ".$frm->select_open('uploadtype[]')." "; for ($i=0; $ioption($up_name[$i], $up_value[$i], varset($_POST['uploadtype']) == $up_value[$i]); } //FIXME - upload shortcode, flexible enough to be used everywhere // Note from Cameron: should include iframe and use ajax as to not require a full refresh of the page. $text .= "
".LAN_NEWS_25." ".$frm->text('resize_value', ($_POST['resize_value'] ? $_POST['resize_value'] : '100'), 4, 'size=3&class=tbox')." px
".$frm->admin_button('submitupload', NWSLAN_66, 'upload')."
"; } $text .= "
"; */ $text .= "
".NWSLAN_67.": "; /* $parms = "name=news_thumbnail"; $parms .= "&path=".e_NEWSIMAGE; $parms .= "&filter=0"; $parms .= "&fullpath=1"; $parms .= "&default=".urlencode(basename($_POST['news_thumbnail'])); $parms .= "&multiple=FALSE"; $parms .= "&label=-- ".LAN_NEWS_48." --"; $parms .= "&subdirs=0"; $parms .= "&tabindex=".$frm->getNext(); */ //$parms .= "&click_target=data"; //$parms .= "&click_prefix=[img][[e_IMAGE]]newspost_images/"; //$parms .= "&click_postfix=[/img]"; $text .= $frm->imagepicker('news_thumbnail', $_POST['news_thumbnail'],'','news'); // $text .= "
".$tp->parseTemplate("{IMAGESELECTOR={$parms}&scaction=select}")."
"; // $text .= "
".$tp->parseTemplate("{IMAGESELECTOR={$parms}&scaction=preview}")."
"; $text .= "
".LAN_NEWS_23."
"; //BEGIN SEO block $text .= "
SEO "; // news_rewrite table Deprecated. e_url.php standard to be established. /* $text .= " "; */ $text .= "
Friendly URL string: ".$frm->text('news_rewrite_string', $tp->post_toForm($_POST['news_rewrite_string']), 255)." ".$frm->hidden('news_rewrite_id', intval($_POST['news_rewrite_id']))."
To make this work, you need to enable 'SEF URLs' config profile from URL Configuration area
Meta keywords: ".$frm->text('news_meta_keywords', $tp->post_toForm($_POST['news_meta_keywords']), 255)."
Meta description: ".$frm->textarea('news_meta_description', $tp->post_toForm($_POST['news_meta_description']), 7)."
"; //BEGIN Options block $text .= "
".LAN_NEWS_53." "; // --------------------- News Userclass --------------------------- $text .= " "; if($pref['trackbackEnabled']){ $text .= " "; } //triggerHook $data = array('method'=>'form', 'table'=>'news', 'id'=>$id, 'plugin'=>'news', 'function'=>'create_item'); $hooks = e107::getEvent()->triggerHook($data); if(!empty($hooks)) { $text .= " "; foreach($hooks as $hook) { if(!empty($hook)) { $text .= " "; } } } $text .= "
".NWSLAN_15.": ".$frm->radio('news_allow_comments', 0, !$_POST['news_allow_comments'])."".$frm->label(LAN_ENABLED, 'news_allow_comments', 0)."   ".$frm->radio('news_allow_comments', 1, $_POST['news_allow_comments'])."".$frm->label(LAN_DISABLED, 'news_allow_comments', 1)."
".NWSLAN_18."
".NWSLAN_73.": "; $text .= " ".$frm->radio_multi('news_render_type', $this->news_renderTypes, $_POST['news_render_type'], true)."
".NWSLAN_74."
".NWSLAN_19.":
".NWSLAN_21.":
"; $_startdate = ($_POST['news_start'] > 0) ? date("d/m/Y", $_POST['news_start']) : ""; $cal_options['showsTime'] = false; $cal_options['showOthers'] = false; $cal_options['weekNumbers'] = false; $cal_options['ifFormat'] = "%d/%m/%Y"; $cal_attrib['class'] = "tbox"; $cal_attrib['size'] = "10"; $cal_attrib['name'] = "news_start"; $cal_attrib['value'] = $_startdate; $cal_attrib['tabindex'] = $frm->getNext(); $text .= $this->_cal->make_input_field($cal_options, $cal_attrib); $text .= " - "; $_enddate = ($_POST['news_end'] > 0) ? date("d/m/Y", $_POST['news_end']) : ""; unset($cal_options); unset($cal_attrib); $cal_options['showsTime'] = false; $cal_options['showOthers'] = false; $cal_options['weekNumbers'] = false; $cal_options['ifFormat'] = "%d/%m/%Y"; $cal_attrib['class'] = "tbox"; $cal_attrib['size'] = "10"; $cal_attrib['name'] = "news_end"; $cal_attrib['value'] = $_enddate; $cal_attrib['tabindex'] = $frm->getNext(); $text .= $this->_cal->make_input_field($cal_options, $cal_attrib); $text .= "
".NWSLAN_72."
".LAN_NEWS_32.":
"; $_update_datestamp = ($_POST['news_datestamp'] > 0 && !strpos($_POST['news_datestamp'],"/")) ? date("d/m/Y H:i:s", $_POST['news_datestamp']) : trim($_POST['news_datestamp']); unset($cal_options); unset($cal_attrib); $cal_options['showsTime'] = true; $cal_options['showOthers'] = true; $cal_options['weekNumbers'] = false; $cal_options['ifFormat'] = "%d/%m/%Y %H:%M:%S"; $cal_options['timeFormat'] = "24"; $cal_attrib['class'] = "tbox"; $cal_attrib['name'] = "news_datestamp"; $cal_attrib['value'] = $_update_datestamp; $text .= $this->_cal->make_input_field($cal_options, $cal_attrib); $text .= "
".$frm->checkbox('update_datestamp', '1', $_POST['update_datestamp']).$frm->label(NWSLAN_105, 'update_datestamp', '1')."
".LAN_NEWS_33."
".NWSLAN_22.": ".$frm->uc_checkbox('news_userclass', $_POST['news_class'], 'nobody,public,guest,member,admin,classes,language', 'description=1')."
".NWSLAN_84."
".LAN_NEWS_28.": ".$frm->checkbox('news_sticky', '1', $_POST['news_sticky']).$frm->label(LAN_NEWS_30, 'news_sticky', '1')."
".LAN_NEWS_29."
".LAN_NEWS_34.": ".LAN_NEWS_35."
".LAN_NEWS_37."
".LAN_HOOKS."
".$hook['caption']." ".$hook['text']."
".$frm->admin_button('preview', isset($_POST['preview']) ? NWSLAN_24 : NWSLAN_27 , 'submit')." ".$frm->admin_button('submit_news', ($id && $sub_action != "sn" && $sub_action != "upload") ? NWSLAN_25 : NWSLAN_26 , 'update')." ".$frm->checkbox('create_edit_stay', 1, isset($_POST['create_edit_stay'])).$frm->label(LAN_NEWS_54, 'create_edit_stay', 1)."
"; $emessage = eMessage::getInstance(); $e107->ns->tablerender($this->getSubAction() == 'edit' ? NWSLAN_29a : NWSLAN_29, $emessage->render().$text); } function preview_item($id) { $ix = new news; $e107 = &e107::getInstance(); $_POST['news_title'] = $e107->tp->toDB($_POST['news_title']); $_POST['news_summary'] = $e107->tp->toDB($_POST['news_summary']); $_POST['news_id'] = $id; if($_POST['news_start']) { $tmp = explode("/", $_POST['news_start']); $_POST['news_start'] = mktime(0, 0, 0, $tmp[1], $tmp[0], $tmp[2]); } else { $_POST['news_start'] = 0; } if($_POST['news_end']) { $tmp = explode("/", $_POST['news_end']); $_POST['news_end'] = mktime(0, 0, 0, $tmp[1], $tmp[0], $tmp[2]); } else { $_POST['news_end'] = 0; } $matches = array(); if(preg_match("#(.*?)/(.*?)/(.*?) (.*?):(.*?):(.*?)$#", $_POST['news_datestamp'], $matches)) { $_POST['news_datestamp'] = mktime($matches[4], $matches[5], $matches[6], $matches[2], $matches[1], $matches[3]); } else { $_POST['news_datestamp'] = time(); } if($_POST['update_datestamp']) { $_POST['news_datestamp'] = time(); } $e107->sql->db_Select("news_category", "*", "category_id='".intval($_POST['cat_id'])."'"); list($_POST['category_id'], $_POST['category_name'], $_POST['category_icon']) = $e107->sql->db_Fetch(); list($_POST['user_id'],$_POST['user_name']) = explode(chr(35), $_POST['news_author']); $_POST['news_author'] = $_POST['user_id']; $_POST['comment_total'] = $id ? $e107->sql->db_Count("comments", "(*)", " WHERE comment_item_id={$id} AND comment_type='0'") : 0; $_PR = $_POST; $_PR['news_body'] = $e107->tp->post_toHTML($_PR['news_body'],FALSE); $_PR['news_title'] = $e107->tp->post_toHTML($_PR['news_title'],FALSE,"emotes_off, no_make_clickable"); $_PR['news_summary'] = $e107->tp->post_toHTML($_PR['news_summary']); $_PR['news_extended'] = $e107->tp->post_toHTML($_PR['news_extended']); $_PR['news_file'] = $_POST['news_file']; $_PR['news_thumbnail'] = basename($_POST['news_thumbnail']); //$ix->render_newsitem($_PR); return "
".NWSLAN_27."
".$e107->tp->parseTemplate('{NEWSINFO}').$ix->render_newsitem($_PR, 'return')."
"; } function ajax_exec_cat() { if(!getperms('0|7')) { exit; } require_once (e_HANDLER.'js_helper.php'); $e107 = &e107::getInstance(); $category = array(); if ($e107->sql->db_Select("news_category", "*", "category_id=".$this->getId())) { $category = $e107->sql->db_Fetch(); } if(empty($category)) { e_jshelper::sendAjaxError(404, 'Page not found!', 'Requested news category was not found in the DB.', true); } $jshelper = new e_jshelper(); $jshelper->addResponseAction('fill-form', $category); //reset if required $category_rewrite = array( 'news_rewrite_id' => 0, 'news_rewrite_source' => 0, 'news_rewrite_string' => '', 'news_rewrite_type' => 0 ); // if ($e107->sql->db_Select('news_rewrite', '*', 'news_rewrite_source='.$this->getId().' AND news_rewrite_type=2')) { // $category_rewrite = $e107->sql->db_Fetch(); } $jshelper->addResponseAction('fill-form', $category_rewrite); //show cancel and update, hide create buttons; disable create button (just in case) $jshelper->addResponseAction('element-invoke-by-id', array( 'show' => 'category-clear,update-category', 'disabled,1' => 'create-category', 'hide' => 'create-category', 'newsScrollToMe' => 'core-newspost-cat-create' )); //Send the prefered response type $jshelper->sendResponse('XML'); } function ajax_exec_cat_list_refresh() { if(!getperms('0|7')) { exit; } echo $this->show_categoriy_list(); } function ajax_exec_catorder() { if(!getperms('0|7')) { exit; } //interactive category order $check = e107::getDb()->db_Update('news_category', 'category_order='.intval($this->getId()).' WHERE category_id='.intval($this->getSubAction())); if(e107::getDb()->getLastErrorNumber()) { echo 'mySQL Error #'.e107::getDb()->getLastErrorNumber().': '.e107::getDb()->getLastErrorText(); return; } if($check) { e107::getAdminLog()->log_event('NEWS_05', 'category_id='.intval($this->getSubAction()).', category_order='.intval($this->getId()), E_LOG_INFORMATIVE, ''); } } function ajax_exec_catmanager() { if(!getperms('0|7')) { exit; } //interactive category manage permissions $check = e107::getDb()->db_Update('news_category', 'category_manager='.intval($this->getId()).' WHERE category_id='.intval($this->getSubAction())); if(e107::getDb()->getLastErrorNumber()) { echo 'mySQL Error #'.e107::getDb()->getLastErrorNumber().': '.e107::getDb()->getLastErrorText(); retrun; } if($check) { $class_name = e107::getUserClass()->uc_get_classname($this->getId()); e107::getAdminLog()->log_event('NEWS_05', 'category_id='.intval($this->getSubAction()).', category_manager='.intval($this->getId()).' ('.$class_name.')', E_LOG_INFORMATIVE, ''); } } function show_categories() { $frm = e107::getForm(false, true); $category = array(); if ($this->getSubAction() == "edit" && !isset($_POST['update_category'])) { if (e107::getDb()->db_Select("news_category", "*", "category_id=".$this->getId())) { $category = e107::getDb()->db_Fetch(); } } if($this->error && (isset($_POST['update_category']) || isset($_POST['create_category']))) { foreach ($_POST as $k=>$v) { if(strpos($k, 'category_') === 0) { $category[$k] = e107::getParser()->post_toForm($v); continue; } if(strpos($k, 'news_rewrite_') === 0) { $category_rewrite[$k] = e107::getParser()->post_toForm($v); continue; } } } //FIXME - lan $text = "
".NWSLAN_56." "; // Disabled until e_url is complete. // $text .= " // // // // "; $text .= "
".NWSLAN_52." ".$frm->text('category_name', $category['category_name'], 200)."
Required field
Category friendly URL string // ".$frm->text('category_sefurl', $category['category_sefurl'], 255)." //
//
Category meta keywords ".$frm->text('category_meta_keywords', $category['category_meta_keywords'], 255)."
Used on news categoty list page
Category meta description ".$frm->textarea('category_meta_description', $category['category_meta_description'], 5)."
Used on news categoty list page
Category management permissions ".$frm->uc_select('category_manager', vartrue($category['category_manager'], e_UC_ADMIN), 'main,admin,classes')."
Which group of site administrators are able to manage this category related news
".NWSLAN_53." ".$frm->iconpicker('category_icon', $category['category_icon'], NWSLAN_54)." ".$frm->hidden('category_order', $category['category_order'])."
"; if($this->getId()) { $text .= " ".$frm->admin_button('update_category', NWSLAN_55, 'update')." ".$frm->admin_button('category_clear', LAN_CANCEL, 'cancel')." ".$frm->hidden("category_id", $this->getId())." "; } else { $text .= " ".$frm->admin_button('create_category', NWSLAN_56, 'create')." ".$frm->admin_button('update_category', NWSLAN_55, 'update', '', 'other=style="display:none"')." ".$frm->admin_button('category_clear', LAN_CANCEL, 'cancel', '', 'other=style="display:none"')." ".$frm->hidden("category_id", 0)." "; } $text .= "
".$this->show_categoriy_list()."
"; e107::getRender()->tablerender(NWSLAN_46a, e107::getMessage()->render().$text); } function show_categoriy_list() { $frm = e107::getForm(); //FIXME - lan $text = "
".NWSLAN_51." "; if ($category_total = e107::getDb()->db_Select_gen("SELECT ncat.* FROM #news_category AS ncat ORDER BY ncat.category_order ASC")) { $tindex = 100; while ($category = e107::getDb()->db_Fetch()) { $icon = ''; if ($category['category_icon']) { $icon = (strstr($category['category_icon'], "images/") ? THEME_ABS.$category['category_icon'] : (strpos($category['category_icon'], '{') === 0 ? e107::getParser()->replaceConstants($category['category_icon'], 'abs') : e_IMAGE_ABS."icons/".$category['category_icon'])); $icon = ""; } //$sefstr = $category['news_rewrite_string'] ? "
SEF: {$category['news_rewrite_string']}" : ''; $text .= " "; $tindex++; } $text .= "
".LAN_NEWS_45." ".NWSLAN_122." ".NWSLAN_6." / SEF String Manage Permissions ".LAN_OPTIONS." Order
{$category['category_id']} {$icon} {$category['category_name']}{$sefstr} ".$frm->uc_select('multi_category_manager['.$category['category_id'].']', vartrue($category['category_manager'], e_UC_ADMIN), 'main,admin,classes')." ".ADMIN_EDIT_ICON." ".$frm->submit_image("delete[category_{$category['category_id']}]", $category['category_id'], 'delete', e107::getParser()->toJS(NWSLAN_37." [ID: {$category['category_id']} ]"))." ".$frm->text('multi_category_order['.$category['category_id'].']', $category['category_order'], 3, 'size=2&tabindex='.$tindex)."
".$frm->admin_button('multi_update_category', LAN_UPDATE, 'update e-hide-if-js')." ".$frm->admin_button('trigger_list_refresh', 'Refresh List', 'refresh')."
"; } else { $text .= "
".NWSLAN_10."
"; } $text .= "
"; return $text; } function _optrange($num, $zero = true) { $tmp = range(0, $num < 0 ? 0 : $num); if(!$zero) unset($tmp[0]); return $tmp; } function ajax_exec_pref_archnum() { $frm = e107::getForm(); echo $frm->selectbox('newsposts_archive', $this->_optrange(intval($this->getSubAction()) - 1), intval(e107::getPref('newsposts_archive')), 'class=tbox&tabindex='.intval($this->getId())); } /* function ajax_exec_searchValue() { $frm = e107::getForm(); echo $frm->filterValue($_POST['filtertype'], $this->fields); } */ function show_news_prefs() { $pref = e107::getPref(); $frm = e107::getForm(); $text = "
".NWSLAN_90." "; // ##### ADDED FOR NEWS ARCHIVE -------------------------------------------------------------------- // the possible archive values are from "0" to "< $pref['newsposts']" // this should really be made as an onchange event on the selectbox for $pref['newsposts'] ... //SecretR - Done $text .= " "; // ##### END -------------------------------------------------------------------------------------- $text .= "
".NWSLAN_127." ".$frm->text('news_sefbase', $pref['news_sefbase'])."
".sprintf(NWSLAN_128, e_ADMIN_ABS.'eurl.php').''.SITEURL.($pref['news_sefbase'] ? $pref['news_sefbase'].'/' : '')."
".NWSLAN_86." ".$frm->checkbox_switch('news_cats', 1, $pref['news_cats'])."
".NWSLAN_87." ".$frm->selectbox('nbr_cols', $this->_optrange(6, false), $pref['nbr_cols'], 'class=tbox')."
".NWSLAN_88." ".$frm->selectbox('newsposts', $this->_optrange(50, false), $pref['newsposts'], 'class=tbox')."
".NWSLAN_115."
".$frm->selectbox('newsposts_archive', $this->_optrange(intval($pref['newsposts']) - 1), intval($pref['newsposts_archive']), 'class=tbox')."
".NWSLAN_116."
".NWSLAN_117." ".$frm->text('newsposts_archive_title', $pref['newsposts_archive_title'])."
".LAN_NEWS_51." ".$frm->uc_select('news_editauthor', $pref['news_editauthor'], 'nobody,main,admin,classes')."
".NWSLAN_106." ".$frm->uc_select('subnews_class', $pref['subnews_class'], 'nobody,public,guest,member,admin,classes')."
".NWSLAN_107." ".$frm->checkbox_switch('subnews_htmlarea', '1', $pref['subnews_htmlarea'])."
".NWSLAN_100." ".$frm->checkbox_switch('subnews_attach', '1', $pref['subnews_attach'])."
".NWSLAN_101." ".$frm->text('subnews_resize', $pref['subnews_resize'], 5, 'size=6&class=tbox')."
".NWSLAN_102."
".NWSLAN_111."
".$frm->checkbox_switch('news_newdateheader', '1', $pref['news_newdateheader'])."
".NWSLAN_112."
".NWSLAN_113."
".$frm->checkbox_switch('news_unstemplate', '1', $pref['news_unstemplate'])."
".NWSLAN_114."
".NWSLAN_120." ".$frm->bbarea('news_subheader', stripcslashes($pref['news_subheader']), 2, 'helpb')."
".$frm->admin_button('save_prefs', NWSLAN_89, 'update')."
"; e107::getRender()->tablerender(NWSLAN_90, e107::getMessage()->render().$text); } function show_submitted_news() { //TODO - image upload path should be e_MEDIA and using generic upload handler on submitnews.php. $e107 = e107::getInstance(); $frm = e107::getForm(); $tp = e107::getParser(); $sql = e107::getDb(); $newsCat = array(); $sql->db_Select('news_category'); while($row = $sql->db_Fetch()) { $newsCat[$row['category_id']] = $tp->toHTML($row['category_name'],FALSE,'TITLE'); } if ($sql->db_Select("submitnews", "*", "submitnews_id !='' ORDER BY submitnews_id DESC")) { $text .= "
".NWSLAN_47." "; while ($row = $sql->db_Fetch()) { $buttext = ($row['submitnews_auth'] == 0)? NWSLAN_58 : NWSLAN_103; if (substr($row['submitnews_item'], -7, 7) == '[/html]') $row['submitnews_item'] = substr($row['submitnews_item'], 0, -7); if (substr($row['submitnews_item'],0 , 6) == '[html]') $row['submitnews_item'] = substr($row['submitnews_item'], 6); $text .= " "; $text .= " "; } $text .= "
  ID ".NWSLAN_57." ".LAN_DATE." ".LAN_AUTHOR." ".NWSLAN_6." ".NWSLAN_123." ".LAN_OPTIONS."
{$row['submitnews_id']} "; $text .= $tp->toHTML($row['submitnews_title'],FALSE,'TITLE'); $text .= ''; // $text .= [ '.NWSLAN_104.' '.$submitnews_name.' '.NWSLAN_108.' '.date('D dS M y, g:ia', $submitnews_datestamp).']
'; $text .= "
".date('D jS M, Y, g:ia', $row['submitnews_datestamp'])." ipDecode($row['submitnews_ip'])."'>".$row['submitnews_name']." ".$newsCat[$row['submitnews_category']]." ".($row['submitnews_auth'] == 0 ? "-" : ADMIN_TRUE_ICON)."
".$frm->admin_button("category_view_{$row['submitnews_id']}", NWSLAN_27, 'action', '', array('id'=>false, 'other'=>"onclick=\"expandit('submitted_".$row['submitnews_id']."')\""))." ".$frm->admin_button("category_edit_{$row['submitnews_id']}", $buttext, 'action', '', array('id'=>false, 'other'=>"onclick=\"document.location='".e_SELF."?create.sn.{$row['submitnews_id']}'\""))." ".$frm->admin_button("delete[sn_{$row['submitnews_id']}]", LAN_DELETE, 'delete', '', array('id'=>false, 'title'=>$e107->tp->toJS(NWSLAN_38." [".LAN_NEWS_45.": {$row['submitnews_id']} ]")))."
"; $text .= "
"; $text .= e107::getForm()->batchoptions(array( 'subdelete_selected' => LAN_DELETE, 'subcategory' => array('Modify Category', $newsCat) )); $text .= "
"; } else { $text .= "
".NWSLAN_59."
"; } e107::getRender()->tablerender(NWSLAN_47, e107::getMessage()->render().$text); } function showMaintenance() { require_once(e_HANDLER."form_handler.php"); $frm = e107::getForm(); $text = "
".LAN_NEWS_59."
".LAN_NEWS_56." ".$frm->checkbox('newsdeletecomments', '1', '0').LAN_NEWS_61." ".$frm->admin_button('news_comments_recalc', LAN_NEWS_57, 'update')."
"; e107::getRender()->tablerender(LAN_NEWS_59, e107::getMessage()->render().$text); } function _observe_newsCommentsRecalc() { if(!getperms('0')) { $this->noPermissions(); } $qry = "SELECT COUNT(`comment_id`) AS c_count, `news_id`, `news_comment_total`, `news_allow_comments` FROM `#news` LEFT JOIN `#comments` ON `news_id`=`comment_item_id` WHERE (`comment_type`='0') OR (`comment_type`='news') GROUP BY `comment_item_id`"; $deleteCount = 0; $updateCount = 0; $canDelete = isset($_POST['newsdeletecomments']); if ($result = e107::getDb()->db_Select_gen($qry)) { while ($row = e107::getDb()->db_Fetch(MYSQL_ASSOC)) { if ($canDelete && ($row['news_allow_comments'] != 0) && ($row['c_count'] > 0)) // N.B. sense of 'news_allow_comments' is 0 = allow!!! { // Delete comments e107::getDb('sql2')->db_Delete('comments', 'comment_item_id='.$row['news_id']); $deleteCount = $deleteCount + $row['c_count']; $row['c_count'] = 0; // Forces update of news table if necessary } if ($row['news_comment_total'] != $row['c_count']) { e107::getDb('sql2')->db_Update('news', 'news_comment_total = '.$row['c_count'].' WHERE news_id='.$row['news_id']); $updateCount++; } } $this->show_message(str_replace(array('--UPDATE--', '--DELETED--'), array($updateCount, $deleteCount), LAN_NEWS_58), E_MESSAGE_SUCCESS); } else { $this->show_message(LAN_NEWS_62, E_MESSAGE_WARNING); } } function show_message($message, $type = E_MESSAGE_INFO, $session = false) { // ##### Display comfort --------- e107::getMessage()->add($message, $type, $session); } function noPermissions($qry = '') { $url = e_SELF.($qry ? '?'.$qry : ''); if($qry !== e_QUERY) { $this->show_message('Insufficient permissions!', E_MESSAGE_ERROR, true); session_write_close(); header('Location: '.$url); } exit; } function show_options() { $e107 = e107::getInstance(); $var['main']['text'] = NWSLAN_44; $var['main']['link'] = e_SELF; $var['main']['perm'] = "H"; $var['create']['text'] = NWSLAN_45; $var['create']['link'] = e_SELF."?create"; $var['create']['perm'] = "H"; $var['cat']['text'] = NWSLAN_46; $var['cat']['link'] = e_SELF."?cat"; $var['cat']['perm'] = "7"; $var['pref']['text'] = NWSLAN_90; $var['pref']['link'] = e_SELF."?pref"; $var['pref']['perm'] = "0"; //TODO remove commented code before release. // $c = $e107->sql->db_Count('submitnews'); // if ($c) { $var['sn']['text'] = NWSLAN_47." ({$c})"; $var['sn']['link'] = e_SELF."?sn"; $var['sn']['perm'] = "N"; // } if (getperms('0')) { $var['maint']['text'] = LAN_NEWS_55; $var['maint']['link'] = e_SELF."?maint"; $var['maint']['perm'] = "N"; } e_admin_menu(NWSLAN_48, $this->getAction(), $var); } } function newspost_adminmenu() { e107::getRegistry('_newspost_admin')->show_options(); }