Esempio n. 1
0
 public function browse()
 {
     // Get URI vars
     $groupID = (int) uri::segment(5);
     // Get group
     if (!$groupID || !($group = $this->banners_groups_model->getGroup($groupID))) {
         view::setError(__('no_group', 'banners'));
         router::redirect('cp/content/banners/groups');
     }
     // Process query string
     $params = $this->parseQuerystring();
     // Get banners
     if (!($banners = $this->banners_model->getBanners($groupID, $params))) {
         view::setInfo(__('no_banners', 'banners'));
     }
     // Create table grid
     $grid = array('uri' => 'cp/content/banners/browse/' . $groupID, 'keyword' => 'banners', 'header' => array('name' => array('html' => __('name', 'system'), 'class' => 'name', 'sortable' => true), 'total_views' => array('html' => __('banner_views', 'banners'), 'class' => 'views', 'sortable' => true), 'total_clicks' => array('html' => __('banner_clicks', 'banners'), 'class' => 'clicks', 'sortable' => true), 'status' => array('html' => __('active', 'system'), 'class' => 'status'), 'actions' => array('html' => __('actions', 'system'), 'class' => 'actions')), 'content' => array());
     // Create grid content
     foreach ($banners as $banner) {
         $grid['content'][] = array('name' => array('html' => html_helper::anchor('cp/content/banners/edit/' . $groupID . '/' . $banner['banner_id'], text_helper::truncate(text_helper::entities($banner['name']), 64))), 'total_views' => array('html' => $banner['total_views']), 'total_clicks' => array('html' => $banner['total_clicks']), 'status' => array('html' => $banner['active'] ? '<span class="label success small">' . __('yes', 'system') . '</span>' : '<span class="label important small">' . __('no', 'system') . '</span>'), 'actions' => array('html' => array('edit' => html_helper::anchor('cp/content/banners/edit/' . $groupID . '/' . $banner['banner_id'], __('edit', 'system'), array('class' => 'edit')), 'delete' => html_helper::anchor('cp/content/banners/delete/' . $groupID . '/' . $banner['banner_id'], __('delete', 'system'), array('data-html' => __('banner_delete?', 'banners'), 'data-role' => 'confirm', 'class' => 'delete')))));
     }
     // Filter hooks
     hook::filter('cp/content/banners/browse/grid', $grid);
     // Assign vars
     view::assign(array('grid' => $grid));
     // Set title
     view::setTitle(__('banners_manage', 'system_navigation'));
     // Set trail
     view::setTrail('cp/content/banners/groups/edit/' . $groupID, __('group_edit', 'banners') . ' - ' . text_helper::entities($group['name']));
     view::setTrail('cp/content/banners/browse/' . $groupID, __('banners', 'banners'));
     // Assign actions
     view::setAction('cp/content/banners/edit/' . $groupID, __('banner_new', 'banners'), array('class' => 'icon-text icon-banners-new'));
     // Load view
     view::load('cp/content/banners/browse');
 }
Esempio n. 2
0
 public function index()
 {
     // Get gateways
     if (!($gateways = $this->gateways_model->scanGateways())) {
         view::setError(__('no_gateways', 'billing_gateways'));
         router::redirect('cp/billing/transactions');
     }
     // Create table grid
     $grid = array('uri' => 'cp/billing/gateways/browse', 'keyword' => 'billing_gateways', 'header' => array('name' => array('html' => __('name', 'system'), 'class' => 'name'), 'status' => array('html' => __('status', 'system'), 'class' => 'status'), 'actions' => array('html' => __('actions', 'system'), 'class' => 'actions')), 'content' => array());
     // Create grid content
     foreach ($gateways as $gateway) {
         if (isset($gateway['gateway_id']) && $gateway['gateway_id']) {
             if ($gateway['settings']) {
                 $actions['settings'] = html_helper::anchor('cp/billing/gateways/settings/' . $gateway['keyword'], __('settings', 'system'), array('class' => 'settings'));
             }
             $actions['uninstall'] = html_helper::anchor('cp/billing/gateways/uninstall/' . $gateway['keyword'], __('uninstall', 'system'), array('data-html' => __('gateway_uninstall?', 'billing_gateways'), 'data-role' => 'confirm', 'class' => 'uninstall'));
         } else {
             $actions['install'] = html_helper::anchor('cp/billing/gateways/install/' . $gateway['keyword'], __('install', 'system'), array('class' => 'install'));
         }
         $grid['content'][] = array('name' => array('html' => text_helper::entities($gateway['name'])), 'status' => array('html' => $gateway['active'] ? '<span class="label success small">' . __('active', 'system') . '</span>' : '<span class="label important small">' . __('inactive', 'system') . '</span>'), 'actions' => array('html' => $actions));
     }
     // Filter hooks
     hook::filter('cp/billing/gateways/browse/grid', $grid);
     // Assign vars
     view::assign(array('grid' => $grid));
     // Set title
     view::setTitle(__('billing_gateways_manage', 'system_navigation'));
     // Load view
     view::load('cp/billing/gateways/browse');
 }
Esempio n. 3
0
 public function deleteType($typeID, $type)
 {
     loader::library('dbforge');
     $this->dbforge->dropTable(':prefix:users_data_' . $type['keyword']);
     // Delete user type
     if ($retval = $this->db->delete('users_types', array('type_id' => $typeID), 1)) {
         // Update order IDs
         $this->db->query("UPDATE `:prefix:users_types` SET `order_id`=`order_id`-1 WHERE `order_id`>?", array($type['order_id']));
         // Select fields IDs
         $fieldIDs = array();
         foreach ($this->db->query("SELECT `field_id`, `category_id`, `keyword` FROM `:prefix:core_fields` WHERE `category_id`=?", array($typeID))->result() as $field) {
             $fieldIDs[] = $field['field_id'];
         }
         // Do we have any field IDs?
         if ($fieldIDs) {
             // Delete field items
             $this->db->query("DELETE FROM `:prefix:core_fields_items` WHERE `field_id` IN (" . implode(',', $fieldIDs) . ")");
         }
         // Delete fields
         $this->db->delete('core_fields', array('category_id' => $typeID));
         // Action hook
         hook::action('users/types/delete', $typeID, $type);
     }
     $this->cache->cleanup();
     return $retval;
 }
Esempio n. 4
0
 public function deleteEntry($newsID, $news)
 {
     // Delete entry
     $retval = $this->fields_model->deleteValues('news', $newsID);
     if ($retval) {
         // Delete comments
         if ($news['total_comments']) {
             loader::model('comments/comments');
             $this->comments_model->deleteComments('news', $newsID, $news['total_comments']);
         }
         // Delete likes
         if ($news['total_likes']) {
             loader::model('comments/likes');
             $this->likes_model->deleteLikes('news', $newsID, $news['total_likes']);
         }
         // Delete votes
         if ($news['total_votes']) {
             loader::model('comments/votes');
             $this->votes_model->deleteVotes('news', $newsID, $news['total_votes']);
         }
         // Action hook
         hook::action('news/delete', $newsID, $news);
     }
     return $retval;
 }
Esempio n. 5
0
 public function index()
 {
     // Get storage services
     if (!($services = $this->storage_model->scanServices())) {
         view::setError(__('no_services', 'system_storage'));
         router::redirect('cp/system/config/system');
     }
     // Create table grid
     $grid = array('uri' => 'cp/system/storage', 'keyword' => 'storages', 'header' => array('name' => array('html' => __('name', 'system'), 'class' => 'name'), 'description' => array('html' => __('description', 'system'), 'class' => 'description'), 'status' => array('html' => __('default', 'system'), 'class' => 'status'), 'actions' => array('html' => __('actions', 'system'), 'class' => 'actions')), 'content' => array());
     // Create grid content
     foreach ($services as $service) {
         $actions = $status = array();
         if (isset($service['service_id']) && $service['service_id']) {
             $status['html'] = $service['default'] ? '<span class="label success small">' . __('yes', 'system') . '</span>' : html_helper::anchor('cp/system/storage/setdefault/' . $service['keyword'], __('no', 'system'), array('class' => 'label important small'));
             $actions['html']['settings'] = html_helper::anchor('cp/system/storage/settings/' . $service['keyword'], __('settings', 'system'), array('class' => 'settings'));
             $actions['html']['uninstall'] = html_helper::anchor('cp/system/storage/uninstall/' . $service['keyword'], __('uninstall', 'system'), array('data-html' => __('service_uninstall?', 'system_storage'), 'data-role' => 'confirm', 'class' => 'uninstall'));
         } else {
             $status['html'] = '<span class="label important small">' . __('no', 'system') . '</span>';
             $actions['html']['install'] = html_helper::anchor('cp/system/storage/install/' . $service['keyword'], __('install', 'system'), array('class' => 'install'));
         }
         $grid['content'][] = array('name' => array('html' => text_helper::entities($service['name'])), 'description' => array('html' => text_helper::entities($service['description'])), 'status' => $status, 'actions' => $actions);
     }
     // Filter hooks
     hook::filter('cp/system/storage/browse/grid', $grid);
     // Assign vars
     view::assign(array('grid' => $grid));
     // Set title
     view::setTitle(__('system_storages_manage', 'system_navigation'));
     // Load view
     view::load('cp/system/storage/browse');
 }
Esempio n. 6
0
 public function browse()
 {
     // Parameters
     $params = array('join_columns' => array(), 'join_items' => array());
     // Process filters
     $params = $this->parseCounters($params);
     // Process query string
     $qstring = $this->parseQuerystring($params['total']);
     // Actions
     $actions = array(0 => __('select', 'system'), 'approve' => __('approve', 'system'), 'decline' => __('decline', 'system'), 'delete' => __('delete', 'system'));
     // Check form action
     if (input::post('do_action')) {
         // Delete selected blogs
         if (input::post('action') && isset($actions[input::post('action')]) && input::post('blog_id') && is_array(input::post('blog_id'))) {
             foreach (input::post('blog_id') as $blogID) {
                 $blogID = (int) $blogID;
                 if ($blogID && $blogID > 0) {
                     $this->action(input::post('action'), $blogID);
                 }
             }
         }
         // Success
         view::setInfo(__('action_applied', 'system'));
         router::redirect('cp/plugins/blogs?' . $qstring['url'] . 'page=' . $qstring['page']);
     }
     // Get blogs
     $blogs = array();
     if ($params['total']) {
         $blogs = $this->blogs_model->getBlogs('in_list', $params['join_columns'], $params['join_items'], $qstring['order'], $qstring['limit']);
     }
     // Create table grid
     $grid = array('uri' => 'cp/plugins/blogs', 'keyword' => 'blogs', 'header' => array('check' => array('html' => 'blog_id', 'class' => 'check'), 'data_title' => array('html' => __('name', 'system'), 'class' => 'name', 'sortable' => true), 'user' => array('html' => __('user', 'system'), 'class' => 'user'), 'post_date' => array('html' => __('post_date', 'system'), 'class' => 'date', 'sortable' => true), 'status' => array('html' => __('status', 'system'), 'class' => 'status'), 'actions' => array('html' => __('actions', 'system'), 'class' => 'actions')), 'content' => array());
     // Create grid content
     foreach ($blogs as $blog) {
         if ($blog['active'] == 1) {
             $status = html_helper::anchor('cp/plugins/blogs/decline/' . $blog['blog_id'] . '?' . $qstring['url'] . 'page=' . $qstring['page'], __('active', 'system'), array('class' => 'label small success'));
         } else {
             $status = html_helper::anchor('cp/plugins/blogs/approve/' . $blog['blog_id'] . '?' . $qstring['url'] . 'page=' . $qstring['page'], $blog['active'] ? __('pending', 'system') : __('inactive', 'system'), array('class' => 'label small ' . ($blog['active'] ? 'info' : 'important')));
         }
         $grid['content'][] = array('check' => array('html' => $blog['blog_id']), 'data_title' => array('html' => html_helper::anchor('cp/plugins/blogs/edit/' . $blog['blog_id'], text_helper::truncate($blog['data_title'], 64))), 'user' => array('html' => users_helper::anchor($blog['user'])), 'post_date' => array('html' => date_helper::formatDate($blog['post_date'])), 'status' => array('html' => $status), 'actions' => array('html' => array('edit' => html_helper::anchor('cp/plugins/blogs/edit/' . $blog['blog_id'], __('edit', 'system'), array('class' => 'edit')), 'delete' => html_helper::anchor('cp/plugins/blogs/delete/' . $blog['blog_id'] . '?' . $qstring['url'] . 'page=' . $qstring['page'], __('delete', 'system'), array('data-html' => __('blog_delete?', 'blogs'), 'data-role' => 'confirm', 'class' => 'delete')))));
     }
     // Set pagination
     $config = array('base_url' => config::siteURL('cp/plugins/blogs?' . $qstring['url']), 'total_items' => $params['total'], 'items_per_page' => $this->blogsPerPage, 'current_page' => $qstring['page'], 'uri_segment' => 'page');
     $pagination = loader::library('pagination', $config, null);
     // Filter hooks
     hook::filter('cp/plugins/blogs/browse/grid', $grid);
     hook::filter('cp/plugins/blogs/browse/actions', $actions);
     // Assign vars
     view::assign(array('grid' => $grid, 'actions' => $actions, 'pagination' => $pagination));
     // Set title
     view::setTitle(__('blogs_manage', 'system_navigation'));
     // Set trail
     if ($qstring['search_id']) {
         view::setTrail('cp/plugins/blogs?' . $qstring['url'] . 'page=' . $qstring['page'], __('search_results', 'system'));
     }
     // Assign actions
     view::setAction('#', __('search', 'system'), array('class' => 'icon-text icon-system-search', 'onclick' => '$(\'#blogs-search\').toggle();return false;'));
     // Load view
     view::load('cp/plugins/blogs/browse');
 }
Esempio n. 7
0
 public function deleteUser($userID, $user)
 {
     // Delete messages
     $retval = $this->db->query("DELETE FROM `:prefix:timeline_messages` WHERE `user_id`=? OR `poster_id`=?", array($userID, $userID));
     // Action hook
     hook::action('timeline/messages/delete_user', $userID, $user);
     return $retval;
 }
Esempio n. 8
0
 public function browse()
 {
     // Parameters
     $params = array('join_columns' => array(), 'join_items' => array());
     // Process filters
     $params = $this->parseCounters($params);
     // Process query string
     $qstring = $this->parseQuerystring($params['total']);
     // Actions
     $actions = array(0 => __('select', 'system'), 'delete' => __('delete', 'system'));
     // Check form action
     if (input::post('do_action')) {
         // Delete selected news
         if (input::post('action') == 'delete') {
             if (input::post('news_id') && is_array(input::post('news_id'))) {
                 foreach (input::post('news_id') as $newsID) {
                     $newsID = (int) $newsID;
                     if ($newsID && $newsID > 0) {
                         $this->delete($newsID);
                     }
                 }
             }
         }
         // Success
         view::setInfo(__('action_applied', 'system'));
         router::redirect('cp/content/news?' . $qstring['url'] . 'page=' . $qstring['page']);
     }
     // Get news
     $news = array();
     if ($params['total']) {
         $news = $this->news_model->getEntries('in_list', $params['join_columns'], $params['join_items'], $qstring['order'], $qstring['limit']);
     }
     // Create table grid
     $grid = array('uri' => 'cp/content/news', 'keyword' => 'news', 'header' => array('check' => array('html' => 'news_id', 'class' => 'check'), 'data_title_' . session::item('language') => array('html' => __('name', 'system'), 'class' => 'name', 'sortable' => true), 'post_date' => array('html' => __('post_date', 'system'), 'class' => 'date', 'sortable' => true), 'status' => array('html' => __('status', 'system'), 'class' => 'status'), 'actions' => array('html' => __('actions', 'system'), 'class' => 'actions')), 'content' => array());
     // Create grid content
     foreach ($news as $entry) {
         $grid['content'][] = array('check' => array('html' => $entry['news_id']), 'data_title_' . session::item('language') => array('html' => html_helper::anchor('cp/content/news/edit/' . $entry['news_id'], text_helper::truncate($entry['data_title'], 64))), 'post_date' => array('html' => date_helper::formatDate($entry['post_date'])), 'status' => array('html' => $entry['active'] ? '<span class="label success small">' . __('yes', 'system') . '</span>' : '<span class="label important small">' . __('no', 'system') . '</span>'), 'actions' => array('html' => array('edit' => html_helper::anchor('cp/content/news/edit/' . $entry['news_id'], __('edit', 'system'), array('class' => 'edit')), 'delete' => html_helper::anchor('cp/content/news/delete/' . $entry['news_id'] . '?' . $qstring['url'] . 'page=' . $qstring['page'], __('delete', 'system'), array('data-html' => __('entry_delete?', 'news'), 'data-role' => 'confirm', 'class' => 'delete')))));
     }
     // Set pagination
     $config = array('base_url' => config::siteURL('cp/content/news?' . $qstring['url']), 'total_items' => $params['total'], 'items_per_page' => $this->newsPerPage, 'current_page' => $qstring['page'], 'uri_segment' => 'page');
     $pagination = loader::library('pagination', $config, null);
     // Filter hooks
     hook::filter('cp/content/news/browse/grid', $grid);
     hook::filter('cp/content/news/browse/actions', $actions);
     // Assign vars
     view::assign(array('grid' => $grid, 'actions' => $actions, 'pagination' => $pagination));
     // Set title
     view::setTitle(__('news_manage', 'system_navigation'));
     // Set trail
     if ($qstring['search_id']) {
         view::setTrail('cp/content/news?' . $qstring['url'] . 'page=' . $qstring['page'], __('search_results', 'system'));
     }
     // Assign actions
     view::setAction('cp/content/news/edit/', __('entry_new', 'news'), array('class' => 'icon-text icon-news-new'));
     view::setAction('#', __('search', 'system'), array('class' => 'icon-text icon-system-search', 'onclick' => '$(\'#news-search\').toggle();return false;'));
     // Load view
     view::load('cp/content/news/browse');
 }
Esempio n. 9
0
 public function browse()
 {
     // Parameters
     $params = array('join_columns' => array());
     // Process filters
     $params = $this->parseCounters($params);
     // Process query string
     $qstring = $this->parseQuerystring($params['total']);
     // Actions
     $actions = array(0 => __('select', 'system'), 'delete' => __('delete', 'system'));
     // Check form action
     if (input::post('do_action')) {
         // Delete selected messages
         if (input::post('action') == 'delete') {
             if (input::post('message_id') && is_array(input::post('message_id'))) {
                 foreach (input::post('message_id') as $messageID) {
                     $messageID = (int) $messageID;
                     if ($messageID && $messageID > 0) {
                         $this->delete($messageID);
                     }
                 }
             }
         }
         // Success
         view::setInfo(__('action_applied', 'system'));
         router::redirect('cp/plugins/messages?' . $qstring['url'] . 'page=' . $qstring['page']);
     }
     // Get messages
     $messages = array();
     if ($params['total']) {
         $messages = $this->messages_model->getMessages($params['join_columns'], $qstring['order'], $qstring['limit']);
     }
     // Create table grid
     $grid = array('uri' => 'cp/plugins/messages', 'keyword' => 'messages', 'header' => array('check' => array('html' => 'message_id', 'class' => 'check'), 'message' => array('html' => __('message', 'messages'), 'class' => 'name'), 'user' => array('html' => __('user', 'system'), 'class' => 'user'), 'post_date' => array('html' => __('post_date', 'system'), 'class' => 'date', 'sortable' => true), 'actions' => array('html' => __('actions', 'system'), 'class' => 'actions')), 'content' => array());
     // Create grid content
     foreach ($messages as $message) {
         $grid['content'][] = array('check' => array('html' => $message['message_id']), 'message' => array('html' => html_helper::anchor('cp/plugins/messages/edit/' . $message['message_id'], text_helper::truncate($message['message'], 64))), 'user' => array('html' => users_helper::anchor($message['user'])), 'post_date' => array('html' => date_helper::formatDate($message['post_date'])), 'actions' => array('html' => array('edit' => html_helper::anchor('cp/plugins/messages/edit/' . $message['message_id'], __('edit', 'system'), array('class' => 'edit')), 'delete' => html_helper::anchor('cp/plugins/messages/delete/' . $message['message_id'] . '?' . $qstring['url'] . 'page=' . $qstring['page'], __('delete', 'system'), array('data-html' => __('message_delete?', 'messages'), 'data-role' => 'confirm', 'class' => 'delete')))));
     }
     // Set pagination
     $config = array('base_url' => config::siteURL('cp/plugins/messages?' . $qstring['url']), 'total_items' => $params['total'], 'items_per_page' => $this->messagesPerPage, 'current_page' => $qstring['page'], 'uri_segment' => 'page');
     $pagination = loader::library('pagination', $config, null);
     // Filter hooks
     hook::filter('cp/plugins/messages/browse/grid', $grid);
     hook::filter('cp/plugins/messages/browse/actions', $actions);
     // Assign vars
     view::assign(array('grid' => $grid, 'actions' => $actions, 'pagination' => $pagination));
     // Set title
     view::setTitle(__('messages_manage', 'system_navigation'));
     // Set trail
     if ($qstring['search_id']) {
         view::setTrail('cp/plugins/messages?' . $qstring['url'] . 'page=' . $qstring['page'], __('search_results', 'system'));
     }
     // Assign actions
     view::setAction('#', __('search', 'system'), array('class' => 'icon-text icon-system-search', 'onclick' => '$(\'#messages-search\').toggle();return false;'));
     // Load view
     view::load('cp/plugins/messages/browse');
 }
Esempio n. 10
0
 public function deleteBanner($groupID, $bannerID, $banner)
 {
     $retval = $this->db->delete('banners_data', array('banner_id' => $bannerID), 1);
     if ($retval) {
         // Action hook
         hook::action('banners/delete', $bannerID, $banner);
     }
     return $retval;
 }
Esempio n. 11
0
 public function toggleItemStatus($plugin, $type, $keyword, $status)
 {
     $retval = $this->db->update('core_lists', array('active' => $status), array('plugin' => $plugin, 'type' => $type, 'keyword' => $keyword), 1);
     if ($retval) {
         // Action hook
         hook::action('system/templates/navigation/status', $plugin, $type, $keyword, $status);
     }
     $this->cache->cleanup();
     return $retval;
 }
Esempio n. 12
0
 public function deleteUser($userID, $user)
 {
     // Delete reports
     $retval = $this->db->query("DELETE FROM `:prefix:reports` WHERE `user_id`=? OR `poster_id`=?", array($userID, $userID));
     if ($retval) {
         // Action hook
         hook::action('reports/delete_user', $userID, $user);
     }
     return $retval;
 }
Esempio n. 13
0
 public function process($userID, $productID, $params)
 {
     // Get credits package
     $package = $this->getPackage($productID);
     // Update total credits
     $retval = $this->addCredits($userID, $package['credits']);
     // Action hook
     hook::action('billing/credits/process', $productID, $userID, $package['credits']);
     return $retval;
 }
Esempio n. 14
0
 public function saveMetaTags($plugin, $keyword, $data)
 {
     $retval = $this->db->update('core_meta_tags', $data, array('plugin' => $plugin, 'keyword' => $keyword), 1);
     if ($retval) {
         // Action hook
         hook::action('system/seo/update', $plugin, $keyword, $data);
     }
     $this->cache->cleanup();
     return $retval;
 }
Esempio n. 15
0
 public function sendFeedback($email, $subject, $message)
 {
     loader::library('email');
     $this->email->reply($email);
     $retval = $this->email->sendEmail(config::item('feedback_email', 'feedback'), $subject, $message);
     if ($retval) {
         // Action hook
         hook::action('feedback/send/post', $email, $subject, $message);
     }
     return $retval;
 }
Esempio n. 16
0
 public function deleteGroup($groupID, $group)
 {
     // Delete banner group
     $retval = $this->db->delete('banners_groups', array('group_id' => $groupID), 1);
     if ($retval) {
         // Delete banners
         $this->db->delete('banners_data', array('group_id' => $groupID));
         // Action hook
         hook::action('banners/groups/delete', $groupID, $group);
     }
     return $retval;
 }
Esempio n. 17
0
 public function deleteUser($userID, $user)
 {
     // Get users
     $users = $this->db->query("SELECT * FROM `:prefix:users_blocked` WHERE `blocked_id`=?", array($userID))->result();
     foreach ($users as $user) {
         $this->db->query("UPDATE `:prefix:users` SET `total_blocked`=`total_blocked`-1 WHERE `user_id`=? LIMIT 1", array($user['user_id']));
     }
     // Delete blocked users
     $retval = $this->db->query("DELETE FROM `:prefix:users_blocked` WHERE `user_id`=? OR `blocked_id`=?", array($userID, $userID));
     // Action hook
     hook::action('users/blocked/delete_user', $userID, $user);
     return $retval;
 }
Esempio n. 18
0
 public function index()
 {
     // Get plugins
     if (!($plugins = $this->plugins_model->scanPlugins())) {
         view::setError(__('no_plugins', 'system_plugins'));
         router::redirect('cp/system/config/system');
     }
     // Create table grid
     $grid = array('uri' => 'cp/system/plugins', 'keyword' => 'plugins', 'header' => array('name' => array('html' => __('name', 'system'), 'class' => 'name'), 'description' => array('html' => __('description', 'system'), 'class' => 'text'), 'version' => array('html' => __('plugin_version', 'system_plugins'), 'class' => 'version'), 'author' => array('html' => __('plugin_author', 'system_plugins'), 'class' => 'author'), 'actions' => array('html' => __('actions', 'system'), 'class' => 'actions')), 'content' => array());
     // Create grid content
     foreach ($plugins as $plugin) {
         $version = $plugin['version'] != '' ? $plugin['version'] : '1.0.0';
         if (isset($plugin['plugin_id']) && $plugin['plugin_id'] && version_compare($plugin['version_new'], $plugin['version']) == 1) {
             $version .= ' ' . html_helper::anchor('cp/system/plugins/view/' . $plugin['keyword'], '+', array('class' => 'label success small', 'title' => __('plugin_new_version', 'system_plugins', array('%version' => text_helper::entities($plugin['version_new'])))));
         }
         $author = '';
         if ($plugin['author'] || $plugin['website']) {
             if ($plugin['author'] && $plugin['website']) {
                 $author = html_helper::anchor($plugin['website'], $plugin['author'], array('target' => '_blank'));
             } elseif ($plugin['website']) {
                 $author = html_helper::anchor($plugin['website'], text_helper::entities(str_ireplace(array('http://www.', 'http://'), '', $plugin['website'])), array('target' => '_blank'));
             } elseif ($plugin['author']) {
                 $author = $plugin['author'];
             }
         }
         $actions = array();
         if (isset($plugin['plugin_id']) && $plugin['plugin_id']) {
             if ($plugin['settings']) {
                 $actions['html']['settings'] = html_helper::anchor('cp/system/plugins/settings/' . $plugin['keyword'], __('settings', 'system'), array('class' => 'settings'));
             } else {
                 $actions['html']['view'] = html_helper::anchor('cp/system/plugins/view/' . $plugin['keyword'], __('details', 'system'), array('class' => 'details'));
             }
             if (!isset($plugin['system']) || !$plugin['system']) {
                 $actions['html']['uninstall'] = html_helper::anchor('cp/system/plugins/uninstall/' . $plugin['keyword'], __('uninstall', 'system'), array('data-html' => __('plugin_uninstall?', 'system_plugins'), 'data-role' => 'confirm', 'class' => 'uninstall'));
             }
         } else {
             $actions['html']['install'] = html_helper::anchor('cp/system/plugins/install/' . $plugin['keyword'], __('install', 'system'), array('class' => 'install'));
         }
         $grid['content'][] = array('name' => array('html' => html_helper::anchor('cp/system/plugins/view/' . $plugin['keyword'], $plugin['name'])), 'description' => array('html' => text_helper::truncate($plugin['description'], 64)), 'version' => array('html' => $version), 'author' => array('html' => $author), 'actions' => $actions);
     }
     // Filter hooks
     hook::filter('cp/system/plugins/browse/grid', $grid);
     // Assign vars
     view::assign(array('grid' => $grid));
     // Set title
     view::setTitle(__('system_plugins_manage', 'system_navigation'));
     // Load view
     view::load('cp/system/plugins/browse');
 }
Esempio n. 19
0
 public function cleanup()
 {
     $timestamp = date_helper::now() - 60 * 60 * 24 * config::item('notices_cleanup_delay', 'timeline');
     // Get old unseen notices
     $notices = $this->db->query("SELECT * FROM `:prefix:timeline_notices` WHERE `new`=1 AND `post_date`<?", array($timestamp))->result();
     foreach ($notices as $notice) {
         $this->db->query("UPDATE `:prefix:users` SET `total_notices_new`=`total_notices_new`-1 WHERE `user_id`=? LIMIT 1", array($notice['user_id']));
     }
     // Delete notices
     $retval = $this->db->query("DELETE FROM `:prefix:timeline_notices` WHERE `post_date`<?", array($timestamp));
     // Action hook
     hook::action('timeline/notices/cleanup');
     $this->cron_model->addLog('[Timeline] Cleaned up old timeline notifications.');
     return $retval;
 }
Esempio n. 20
0
 public function saveSetting($plugin, $keyword, $value, $orderID = false)
 {
     $data = array('val' => $value);
     if ($orderID !== false) {
         $data['order_id'] = $orderID;
     }
     $retval = $this->db->update('core_config', $data, array('plugin' => $plugin, 'keyword' => $keyword), 1);
     if ($retval) {
         // Action hook
         hook::action('system/settings/update', $plugin, $keyword, $value, $orderID);
     }
     session::delete('', 'config');
     $this->cache->cleanup();
     return $retval;
 }
Esempio n. 21
0
 public function run()
 {
     $shash = uri::segment(3);
     // Verify security string
     if (!$shash || strcmp($shash, config::item('cron_shash', 'system')) !== 0) {
         error::show('Invalid security string.');
     }
     if (strcmp(config::item('cron_last_run', 'system'), date('Ymd', date_helper::now())) === 0) {
         error::show('You may run this file only once per day.');
     }
     // Action hook
     hook::action('cron/run');
     echo "Performed tasks:<br/>";
     echo implode(" <br/>\n", $this->cron_model->getLog());
     $this->cron_model->finalize();
     exit;
 }
Esempio n. 22
0
 public function view()
 {
     // Get URI vars
     $listID = uri::segment(6);
     // Get list
     if (!$listID || !($list = $this->lists_model->getList($listID))) {
         router::redirect('cp/system/config/system');
     }
     // Did we submit the form?
     if (input::post('action') == 'reorder' && input::post('ids')) {
         $this->_reorderItems();
     }
     // Get items
     if (!($items = $this->lists_model->getItems($listID))) {
         router::redirect('cp/system/config/system');
     }
     // Create table grid
     $grid = array('uri' => 'cp/system/templates/navigation', 'keyword' => 'templates', 'header' => array('name' => array('html' => __('name', 'system'), 'class' => 'name'), 'active' => array('html' => __('active', 'system'), 'class' => 'status')), 'content' => array());
     // Create grid content
     foreach ($items as $item) {
         $grid['content'][] = array('name' => array('html' => $item['name']), 'status' => array('html' => html_helper::anchor('cp/system/templates/navigation/togglestatus/' . $item['item_id'], $item['active'] ? __('yes', 'system') : __('no', 'system'), array('class' => $item['active'] ? 'label success small' : 'label important small'))));
     }
     // Filter hooks
     hook::filter('cp/system/templates/navigation/browse/grid', $grid);
     // Assign vars
     view::assign(array('grid' => $grid, 'items' => $items, 'listID' => $listID));
     // Set title
     view::setTitle(__('system_templates_navigation_manage', 'system_navigation'));
     // Set trail
     view::setTrail('cp/system/templates/navigation/view/' . $listID, $list['name']);
     // Set actions
     view::setAction('#', __('done', 'system'), array('class' => 'icon-text icon-system-done', 'onclick' => 'saveSortable();return false;', 'id' => 'actions_link_save'));
     view::setAction('#', __('cancel', 'system'), array('class' => 'icon-text icon-system-cancel', 'onclick' => 'cancelSortable();return false;', 'id' => 'actions_link_cancel'));
     view::setAction('#', __('reorder', 'system'), array('class' => 'icon-text icon-system-sort', 'onclick' => 'switchSortable();return false;', 'id' => 'actions_link_reorder'));
     // Include sortable vendor files
     view::includeJavascript('externals/html5sortable/html5sortable.js');
     view::includeStylesheet('externals/html5sortable/style.css');
     // Load view
     if (input::isAjaxRequest()) {
         view::load('cp/system/templates/navigation/items/browse_' . (input::post('view') == 'list' ? 'list' : 'grid'));
     } else {
         view::load('cp/system/templates/navigation/items/browse');
     }
 }
Esempio n. 23
0
 public function browse()
 {
     // Get URI vars
     $plugin = uri::segment(5, 'system');
     // Assign vars
     view::assign(array('plugin' => $plugin));
     // Does plugin exist?
     if (!config::item('plugins', 'core', $plugin)) {
         view::setError(__('no_config_plugin', 'system_config'));
         router::redirect('cp/system/config/' . $plugin);
     }
     // Get templates
     if (!($templates = $this->emailtemplates_model->getTemplates($plugin))) {
         view::setInfo(__('no_templates', 'system_templates'));
         router::redirect('cp/system/config/system');
     }
     // Create table grid
     $grid = array('uri' => 'cp/system/emailtemplates', 'keyword' => 'emailtemplates', 'header' => array('name' => array('html' => __('name', 'system'), 'class' => 'name'), 'status' => array('html' => __('status', 'system'), 'class' => 'status'), 'actions' => array('html' => __('actions', 'system'), 'class' => 'actions')), 'content' => array());
     // Create grid content
     foreach ($templates as $template) {
         if ($template['keyword'] != 'header' && $template['keyword'] != 'footer') {
             if ($template['active'] == 1) {
                 $status = html_helper::anchor('cp/system/emailtemplates/toggle/' . $template['template_id'], __('active', 'system'), array('class' => 'label small success'));
             } else {
                 $status = html_helper::anchor('cp/system/emailtemplates/toggle/' . $template['template_id'], __('inactive', 'system'), array('class' => 'label small important'));
             }
         } else {
             $status = '<span class="label small success">' . __('active', 'system') . '</span>';
         }
         $grid['content'][] = array('name' => array('html' => html_helper::anchor('cp/system/emailtemplates/edit/' . $template['template_id'], __($template['keyword'], 'system_email_templates'))), 'status' => array('html' => $status), 'actions' => array('html' => array('edit' => html_helper::anchor('cp/system/emailtemplates/edit/' . $template['template_id'], __('edit', 'system'), array('class' => 'edit')))));
     }
     // Filter hooks
     hook::filter('cp/system/emailtemplates/browse/grid', $grid);
     // Assign vars
     view::assign(array('grid' => $grid));
     // Set title
     view::setTitle(__('system_email_templates_manage', 'system_navigation'));
     // Set trail
     view::setTrail('cp/system/emailtemplates/browse/' . $plugin, text_helper::entities(config::item('plugins', 'core', $plugin, 'name')));
     // Load view
     view::load('cp/system/emailtemplates/browse');
 }
Esempio n. 24
0
 public function browse()
 {
     // Get user types
     $types = $this->users_types_model->getTypes();
     // Create table grid
     $grid = array('uri' => 'cp/users/types/browse', 'keyword' => 'userstypes', 'header' => array('name' => array('html' => __('name', 'system'), 'class' => 'name'), 'actions' => array('html' => __('actions', 'system'), 'class' => 'actions')), 'content' => array());
     // Create grid content
     foreach ($types as $type) {
         $grid['content'][] = array('name' => array('html' => html_helper::anchor('cp/users/types/edit/' . $type['type_id'], text_helper::truncate($type['name'], 64))), 'actions' => array('html' => array('questions' => html_helper::anchor('cp/system/fields/users/browse/' . $type['type_id'], __('profile_questions', 'users_types'), array('class' => 'questions')), 'edit' => html_helper::anchor('cp/users/types/edit/' . $type['type_id'], __('edit', 'system'), array('class' => 'edit')), 'delete' => html_helper::anchor('cp/users/types/delete/' . $type['type_id'], __('delete', 'system'), array('data-html' => __('type_delete?', 'users_types'), 'data-role' => 'confirm', 'class' => 'delete')))));
     }
     // Filter hooks
     hook::filter('cp/users/types/browse/grid', $grid);
     // Assign vars
     view::assign(array('grid' => $grid));
     // Set title
     view::setTitle(__('users_types_manage', 'system_navigation'));
     // Assign actions
     view::setAction('cp/users/types/edit', __('type_new', 'users_types'), array('class' => 'icon-text icon-users-types-new'));
     // Load view
     view::load('cp/users/types/browse');
 }
Esempio n. 25
0
 public function browse()
 {
     // Did we submit the form?
     if (input::post('action') == 'reorder' && input::post('ids')) {
         $this->_reorderPlans();
     }
     // Get plans
     if (!($plans = $this->plans_model->getPlans(false))) {
         view::setInfo(__('no_plans', 'billing_plans'));
     }
     // Set cycles
     $cycles = array_map('strtolower', array(1 => __('day', 'date'), 2 => __('week', 'date'), 3 => __('month', 'date'), 4 => __('year', 'date')));
     $cyclesMulti = array_map('strtolower', array(1 => __('days', 'date'), 2 => __('weeks', 'date'), 3 => __('months', 'date'), 4 => __('years', 'date')));
     // Create table grid
     $grid = array('uri' => 'cp/billing/plans/browse', 'keyword' => 'billing_plans', 'header' => array('name' => array('html' => __('name', 'system'), 'class' => 'name'), 'group' => array('html' => __('plan_group', 'billing_plans'), 'class' => 'group'), 'cycle' => array('html' => __('plan_cycle', 'billing_plans'), 'class' => 'cycle'), 'price' => array('html' => __('price', 'billing'), 'class' => 'price'), 'signup' => array('html' => __('plan_signup', 'billing_plans'), 'class' => 'signup'), 'status' => array('html' => __('active', 'system'), 'class' => 'status'), 'actions' => array('html' => __('actions', 'system'), 'class' => 'actions')), 'content' => array());
     // Create grid content
     foreach ($plans as $plan) {
         $grid['content'][] = array('name' => array('html' => html_helper::anchor('cp/billing/plans/edit/' . $plan['plan_id'], $plan['name'])), 'group' => array('html' => config::item('usergroups', 'core', $plan['group_id'])), 'cycle' => array('html' => $plan['duration'] . ' ' . ($plan['duration'] == 1 ? $cycles[$plan['cycle']] : $cyclesMulti[$plan['cycle']])), 'price' => array('html' => money_helper::symbol(config::item('currency', 'billing')) . $plan['price']), 'signup' => array('html' => $plan['signup'] ? '<span class="label success small">' . __('yes', 'system') . '</span>' : '<span class="label important small">' . __('no', 'system') . '</span>'), 'status' => array('html' => $plan['active'] ? '<span class="label success small">' . __('yes', 'system') . '</span>' : '<span class="label important small">' . __('no', 'system') . '</span>'), 'actions' => array('html' => array('edit' => html_helper::anchor('cp/billing/plans/edit/' . $plan['plan_id'], __('edit', 'system'), array('class' => 'edit')), 'delete' => html_helper::anchor('cp/billing/plans/delete/' . $plan['plan_id'], __('delete', 'system'), array('data-html' => __('plan_delete?', 'billing_plans'), 'data-role' => 'confirm', 'class' => 'delete')))));
     }
     // Filter hooks
     hook::filter('cp/billing/plans/browse/grid', $grid);
     // Assign vars
     view::assign(array('grid' => $grid, 'plans' => $plans));
     // Set title
     view::setTitle(__('billing_plans_manage', 'system_navigation'));
     // Assign actions
     view::setAction('cp/billing/plans/edit', __('plan_new', 'billing_plans'), array('class' => 'icon-text icon-billing-plans-new'));
     view::setAction('#', __('done', 'system'), array('class' => 'icon-text icon-system-done', 'onclick' => 'saveSortable();return false;', 'id' => 'actions_link_save'));
     view::setAction('#', __('cancel', 'system'), array('class' => 'icon-text icon-system-cancel', 'onclick' => 'cancelSortable();return false;', 'id' => 'actions_link_cancel'));
     view::setAction('#', __('reorder', 'system'), array('class' => 'icon-text icon-system-sort', 'onclick' => 'switchSortable();return false;', 'id' => 'actions_link_reorder'));
     // Include sortable vendor files
     view::includeJavascript('externals/html5sortable/html5sortable.js');
     view::includeStylesheet('externals/html5sortable/style.css');
     // Load view
     if (input::isAjaxRequest()) {
         view::load('cp/billing/plans/browse_' . (input::post('view') == 'list' ? 'list' : 'grid'));
     } else {
         view::load('cp/billing/plans/browse');
     }
 }
Esempio n. 26
0
 protected function browseFields($plugin, $table, $categoryID = 0)
 {
     // Did we submit the form?
     if (input::post('action') == 'reorder' && input::post('ids')) {
         $this->_reorderFields($plugin, $table, $categoryID);
     }
     // Get fields
     if (!($fields = $this->fields_model->getFields($plugin, $categoryID, 'grid'))) {
         view::setInfo(__('no_fields', 'system_fields'));
     }
     // Field types
     $types = $this->fieldsdb_model->getTypes(true);
     // Create table grid
     $grid = array('uri' => 'cp/usersgroups/browse', 'keyword' => 'usersgroups', 'header' => array('name' => array('html' => __('name', 'system'), 'class' => 'name'), 'keyword' => array('html' => __('keyword', 'system'), 'class' => 'keyword'), 'type' => array('html' => __('field_type', 'system_fields'), 'class' => 'type'), 'actions' => array('html' => __('actions', 'system'), 'class' => 'actions')), 'content' => array());
     // Create grid content
     foreach ($fields as $field) {
         $grid['content'][] = array('name' => array('html' => html_helper::anchor('cp/system/fields/' . $plugin . '/edit/' . $field['category_id'] . '/' . $field['field_id'], text_helper::entities($field['name'])), 'class' => $field['type']), 'keyword' => array('html' => $field['keyword']), 'type' => array('html' => '<span>' . $types[$field['type']] . '</span>', 'class' => $field['type']), 'actions' => array('html' => array('edit' => html_helper::anchor('cp/system/fields/' . $plugin . '/edit/' . $field['category_id'] . '/' . $field['field_id'], __('edit', 'system'), array('class' => 'edit')), 'delete' => html_helper::anchor('cp/system/fields/' . $plugin . '/delete/' . $field['category_id'] . '/' . $field['field_id'], __('delete', 'system'), array('data-html' => __('delete_field?', 'system_fields'), 'data-role' => 'confirm', 'class' => 'delete')))));
     }
     // Filter hooks
     hook::filter('cp/usersgroups/browse/grid', $grid);
     // Assign vars
     view::assign(array('grid' => $grid));
     // Assign vars
     view::assign(array('plugin' => $plugin, 'categoryID' => $categoryID, 'fields' => $fields, 'types' => $types));
     // Assign actions
     view::setAction('cp/system/fields/' . $plugin . '/edit' . ($categoryID ? '/' . $categoryID : ''), __('new_field', 'system_fields'), array('class' => 'icon-text icon-system-fields-new'));
     view::setAction('#', __('done', 'system'), array('class' => 'icon-text icon-system-done', 'onclick' => 'saveSortable();return false;', 'id' => 'actions_link_save'));
     view::setAction('#', __('cancel', 'system'), array('class' => 'icon-text icon-system-cancel', 'onclick' => 'cancelSortable();return false;', 'id' => 'actions_link_cancel'));
     view::setAction('#', __('reorder', 'system'), array('class' => 'icon-text icon-system-sort', 'onclick' => 'switchSortable();return false;', 'id' => 'actions_link_reorder'));
     // Include sortable vendor files
     view::includeJavascript('externals/html5sortable/html5sortable.js');
     view::includeStylesheet('externals/html5sortable/style.css');
     // Load view
     if (input::isAjaxRequest()) {
         view::load('cp/system/fields/browse_' . (input::post('view') == 'list' ? 'list' : 'grid'));
     } else {
         view::load('cp/system/fields/browse');
     }
 }
Esempio n. 27
0
 public function plugins()
 {
     // Get plugins
     if (!($plugins = $this->recalculate_model->getPlugins())) {
         view::setInfo(__('no_plugins', 'system_plugins'));
         router::redirect('cp/system/config/system');
     }
     // Create table grid
     $grid = array('uri' => 'cp/utilities/counters', 'keyword' => 'counters', 'header' => array('name' => array('html' => __('name', 'system'), 'class' => 'name'), 'actions' => array('html' => __('actions', 'system'), 'class' => 'actions')), 'content' => array());
     // Create grid content
     foreach ($plugins as $plugin => $name) {
         $actions['html']['update'] = html_helper::anchor('cp/utilities/counters/update/' . $plugin, __('update', 'system'), array('data-html' => __('counters_update?', 'utilities_counters'), 'data-role' => 'confirm', 'class' => 'update'));
         $grid['content'][] = array('name' => array('html' => $name), 'actions' => $actions);
     }
     // Filter hooks
     hook::filter('cp/utilities/counters/plugins/grid', $grid);
     // Assign vars
     view::assign(array('grid' => $grid));
     // Set title
     view::setTitle(__('utilities_counters_manage', 'system_navigation'));
     // Load view
     view::load('cp/utilities/counters/plugins');
 }
Esempio n. 28
0
 public function browse()
 {
     // Get banner groups
     if (!($groups = $this->banners_groups_model->getGroups())) {
         view::setInfo(__('no_groups', 'banners'));
     }
     // Create table grid
     $grid = array('uri' => 'cp/content/banners/groups/browse', 'keyword' => 'bannersgroups', 'header' => array('name' => array('html' => __('name', 'system'), 'class' => 'name'), 'actions' => array('html' => __('actions', 'system'), 'class' => 'actions')), 'content' => array());
     // Create grid content
     foreach ($groups as $group) {
         $grid['content'][] = array('name' => array('html' => html_helper::anchor('cp/content/banners/groups/edit/' . $group['group_id'], text_helper::truncate(text_helper::entities($group['name']), 64))), 'actions' => array('html' => array('banners' => html_helper::anchor('cp/content/banners/browse/' . $group['group_id'], __('banners', 'banners'), array('class' => 'banners')), 'edit' => html_helper::anchor('cp/content/banners/groups/edit/' . $group['group_id'], __('edit', 'system'), array('class' => 'edit')), 'delete' => html_helper::anchor('cp/content/banners/groups/delete/' . $group['group_id'], __('delete', 'system'), array('data-html' => __('group_delete?', 'banners'), 'data-role' => 'confirm', 'class' => 'delete')))));
     }
     // Filter hooks
     hook::filter('cp/content/banners/groups/browse/grid', $grid);
     // Assign vars
     view::assign(array('grid' => $grid));
     // Set title
     view::setTitle(__('banners_groups_manage', 'system_navigation'));
     // Set title
     view::setAction('cp/content/banners/groups/edit', __('group_new', 'banners'), array('class' => 'icon-text icon-banners-groups-new'));
     // Load view
     view::load('cp/content/banners/groups/browse');
 }
Esempio n. 29
0
 public function browse()
 {
     // Get templates
     if (!($templates = $this->messages_templates_model->getTemplates())) {
         view::setInfo(__('no_templates', 'messages_templates'));
     }
     // Create table grid
     $grid = array('uri' => 'cp/plugins/messages/templates/browse', 'keyword' => 'messages_templates', 'header' => array('name' => array('html' => __('name', 'system'), 'class' => 'name'), 'status' => array('html' => __('active', 'system'), 'class' => 'status'), 'actions' => array('html' => __('actions', 'system'), 'class' => 'actions')), 'content' => array());
     // Create grid content
     foreach ($templates as $template) {
         $grid['content'][] = array('name' => array('html' => html_helper::anchor('cp/plugins/messages/templates/edit/' . $template['template_id'], text_helper::truncate($template['name'], 64))), 'status' => array('html' => $template['active'] ? '<span class="label success small">' . __('yes', 'system') . '</span>' : '<span class="label important small">' . __('no', 'system') . '</span>'), 'actions' => array('html' => array('edit' => html_helper::anchor('cp/plugins/messages/templates/edit/' . $template['template_id'], __('edit', 'system'), array('class' => 'edit')), 'delete' => html_helper::anchor('cp/plugins/messages/templates/delete/' . $template['template_id'], __('delete', 'system'), array('data-html' => __('template_delete?', 'messages_templates'), 'data-role' => 'confirm', 'class' => 'delete')))));
     }
     // Filter hooks
     hook::filter('cp/plugins/messages/templates/browse/grid', $grid);
     // Assign vars
     view::assign(array('grid' => $grid));
     // Set title
     view::setTitle(__('messages_templates_manage', 'system_navigation'));
     // Set action
     view::setAction('cp/plugins/messages/templates/edit', __('template_new', 'messages_templates'), array('class' => 'icon-text icon-messages-templates-new'));
     // Load view
     view::load('cp/plugins/messages/templates/browse');
 }
Esempio n. 30
0
 public function browse()
 {
     // Get newsletters
     if (!($newsletters = $this->newsletters_model->getNewsletters())) {
         view::setInfo(__('no_newsletters', 'newsletters'));
     }
     // Create table grid
     $grid = array('uri' => 'cp/content/newsletters/browse', 'keyword' => 'newsletters', 'header' => array('name' => array('html' => __('newsletter_subject', 'newsletters'), 'class' => 'name'), 'status' => array('html' => __('status', 'system'), 'class' => 'status'), 'actions' => array('html' => __('actions', 'system'), 'class' => 'actions')), 'content' => array());
     // Create grid content
     foreach ($newsletters as $newsletter) {
         $grid['content'][] = array('name' => array('html' => html_helper::anchor('cp/content/newsletters/edit/' . $newsletter['newsletter_id'], text_helper::truncate($newsletter['subject'], 64))), 'status' => array('html' => $newsletter['total_sent'] ? '<span class="label small info">' . __('pending', 'system') . '</span>' : '<span class="label small success">' . __('active', 'system') . '</span>'), 'actions' => array('html' => array('send' => html_helper::anchor('cp/content/newsletters/review/' . $newsletter['newsletter_id'], __('newsletter_review', 'newsletters'), array('class' => 'review')), 'edit' => html_helper::anchor('cp/content/newsletters/edit/' . $newsletter['newsletter_id'], __('edit', 'system'), array('class' => 'edit')), 'delete' => html_helper::anchor('cp/content/newsletters/delete/' . $newsletter['newsletter_id'], __('delete', 'system'), array('data-html' => __('newsletter_delete?', 'newsletters'), 'data-role' => 'confirm', 'class' => 'delete')))));
     }
     // Filter hooks
     hook::filter('cp/content/newsletters/browse/grid', $grid);
     // Assign vars
     view::assign(array('grid' => $grid));
     // Set title
     view::setTitle(__('newsletters_manage', 'system_navigation'));
     // Set action
     view::setAction('cp/content/newsletters/edit', __('newsletter_new', 'newsletters'), array('class' => 'icon-text icon-newsletters-new'));
     // Load view
     view::load('cp/content/newsletters/browse');
 }