/** * view items * @param int 'startnum' starting number for paged output * @author Mark West * @return string HTML string */ public function view($args) { $this->throwForbiddenUnless(SecurityUtil::checkPermission('News::', '::', ACCESS_EDIT), LogUtil::getErrorMsgPermission()); // initialize sort array - used to display sort classes and urls $sort = array(); $fields = array('sid', 'weight', 'from'); // possible sort fields foreach ($fields as $field) { $sort['class'][$field] = 'z-order-unsorted'; // default values } $startnum = FormUtil::getPassedValue('startnum', isset($args['startnum']) ? $args['startnum'] : null, 'GETPOST'); $news_status = FormUtil::getPassedValue('news_status', isset($args['news_status']) ? $args['news_status'] : null, 'GETPOST'); $language = FormUtil::getPassedValue('news_language', isset($args['news_language']) ? $args['news_language'] : null, 'GETPOST'); $purge = FormUtil::getPassedValue('purge', false, 'GET'); $order = FormUtil::getPassedValue('order', isset($args['order']) ? $args['order'] : 'from', 'GETPOST'); $original_sdir = FormUtil::getPassedValue('sdir', isset($args['sdir']) ? $args['sdir'] : 1, 'GETPOST'); $this->view->assign('startnum', $startnum); $this->view->assign('order', $order); $this->view->assign('sdir', $original_sdir); $this->view->assign('selected_language', (isset($language)) ? $language : ''); $sdir = $original_sdir ? 0 : 1; //if true change to false, if false change to true // change class for selected 'orderby' field to asc/desc if ($sdir == 0) { $sort['class'][$order] = 'z-order-desc'; $orderdir = 'DESC'; } if ($sdir == 1) { $sort['class'][$order] = 'z-order-asc'; $orderdir = 'ASC'; } $filtercats = FormUtil::getPassedValue('news', null, 'GETPOST'); $filtercats_serialized = FormUtil::getPassedValue('filtercats_serialized', false, 'GET'); $filtercats = $filtercats_serialized ? unserialize($filtercats_serialized) : $filtercats; $catsarray = News_Util::formatCategoryFilter($filtercats); // complete initialization of sort array, adding urls foreach ($fields as $field) { $sort['url'][$field] = ModUtil::url('News', 'admin', 'view', array( 'news_status' => $news_status, 'news_language' => $language, 'filtercats_serialized' => serialize($filtercats), 'order' => $field, 'sdir' => $sdir)); } $this->view->assign('sort', $sort); $this->view->assign('filter_active', (!isset($language) && !isset($news_status) && empty($filtercats)) ? false : true); if ($purge) { if (ModUtil::apiFunc('News', 'admin', 'purgepermalinks')) { LogUtil::registerStatus($this->__('Done! Purged permalinks.')); } else { LogUtil::registerError($this->__('Error! Could not purge permalinks.')); } return $this->redirect(strpos(System::serverGetVar('HTTP_REFERER'), 'purge') ? ModUtil::url('News', 'admin', 'view') : System::serverGetVar('HTTP_REFERER')); } // clean the session preview data SessionUtil::delVar('newsitem'); // get module vars for later use $modvars = $this->getVars(); if ($modvars['enablecategorization']) { $catregistry = CategoryRegistryUtil::getRegisteredModuleCategories('News', 'news'); $this->view->assign('catregistry', $catregistry); } $multilingual = System::getVar('multilingual', false); $now = DateUtil::getDatetime(); $status = null; if (isset($news_status) && $news_status != '') { if ($news_status == 0) { $status = 0; $to = $now; } elseif ($news_status == 5) { // scheduled is actually the published status, but in the future $status = 0; $from = $now; } else { $status = $news_status; } } // Get all news stories $getallargs = array('startnum' => $startnum, 'status' => $status, 'numitems' => $modvars['itemsperadminpage'], 'ignoreml' => true, 'language' => $language, 'order' => isset($order) ? $order : 'from', 'orderdir' => isset($orderdir) ? $orderdir : 'DESC', 'from' => isset($from) ? $from : null, 'to' => isset($to) ? $to : null, 'filterbydate' => false, 'category' => null, 'catfilter' => isset($catsarray) ? $catsarray : null, 'catregistry' => isset($catregistry) ? $catregistry : null); $items = ModUtil::apiFunc('News', 'user', 'getall', $getallargs); $total_articles = ModUtil::apiFunc('News', 'user', 'countitems', $getallargs); // Set the possible status for later use $itemstatus = array( '' => $this->__('All'), News_Api_User::STATUS_PUBLISHED => $this->__('Published'), News_Api_User::STATUS_REJECTED => $this->__('Rejected'), News_Api_User::STATUS_PENDING => $this->__('Pending Review'), News_Api_User::STATUS_ARCHIVED => $this->__('Archived'), News_Api_User::STATUS_DRAFT => $this->__('Draft'), News_Api_User::STATUS_SCHEDULED => $this->__('Scheduled') ); $newsitems = array(); foreach ($items as $item) { $options = array(); if (System::getVar('shorturls', false)) { $options[] = array('url' => ModUtil::url('News', 'user', 'display', array('sid' => $item['sid'], 'from' => $item['from'], 'urltitle' => $item['urltitle'])), 'image' => '14_layer_visible.png', 'title' => $this->__('View')); } else { $options[] = array('url' => ModUtil::url('News', 'user', 'display', array('sid' => $item['sid'])), 'image' => '14_layer_visible.png', 'title' => $this->__('View')); } if (SecurityUtil::checkPermission('News::', "{$item['cr_uid']}::{$item['sid']}", ACCESS_EDIT)) { if ($item['published_status'] == News_Api_User::STATUS_PENDING) { $options[] = array('url' => ModUtil::url('News', 'admin', 'modify', array('sid' => $item['sid'])), 'image' => 'editcut.png', 'title' => $this->__('Review')); } else { $options[] = array('url' => ModUtil::url('News', 'admin', 'modify', array('sid' => $item['sid'])), 'image' => 'xedit.png', 'title' => $this->__('Edit')); } if (($item['published_status'] != News_Api_User::STATUS_PENDING && (SecurityUtil::checkPermission('News::', "{$item['cr_uid']}::{$item['sid']}", ACCESS_DELETE))) || SecurityUtil::checkPermission('News::', "{$item['cr_uid']}::{$item['sid']}", ACCESS_ADMIN)) { $options[] = array('url' => ModUtil::url('News', 'admin', 'delete', array('sid' => $item['sid'])), 'image' => '14_layer_deletelayer.png', 'title' => $this->__('Delete')); } } $item['options'] = $options; if (in_array($item['published_status'], array_keys($itemstatus))) { $item['status'] = $itemstatus[$item['published_status']]; } else { $item['status'] = $this->__('Unknown'); } $item['infuture'] = DateUtil::getDatetimeDiff_AsField($item['from'], DateUtil::getDatetime(), 6) < 0; $newsitems[] = $item; } // Assign the items to the template $this->view->assign('newsitems', $newsitems); $this->view->assign('total_articles', $total_articles); // Assign the current status filter and the possible ones $this->view->assign('news_status', $news_status); $this->view->assign('itemstatus', $itemstatus); $this->view->assign('order', $order); $selectedcategories = array(); if (is_array($filtercats)) { $catsarray = $filtercats['__CATEGORIES__']; foreach ($catsarray as $propname => $propid) { if ($propid > 0) { $selectedcategories[$propname] = $propid; // removes categories set to 'all' } } } $this->view->assign('selectedcategories', $selectedcategories); // Return the output that has been generated by this function return $this->view->fetch('admin/view.tpl'); }