예제 #1
0
 protected function _sendFeedback()
 {
     // Check if demo mode is enabled
     if (input::demo()) {
         return false;
     }
     // Extra rules
     $rules = array('name' => array('rules' => array('required', 'is_string', 'trim', 'min_length' => 2, 'max_length' => 255)), 'email' => array('rules' => array('required', 'is_string', 'trim', 'valid_email', 'min_length' => 4, 'max_length' => 255)), 'subject' => array('rules' => array('required', 'is_string', 'trim', 'min_length' => 5, 'max_length' => 255)), 'message' => array('rules' => array('required', 'is_string', 'trim', 'min_length' => 10, 'max_length' => 10000)));
     if (config::item('feedback_captcha', 'feedback') == 1 || config::item('feedback_captcha', 'feedback') == 2 && !users_helper::isLoggedin()) {
         $rules['captcha'] = array('rules' => array('is_captcha'));
     }
     validate::setRules($rules);
     // Validate form values
     if (!validate::run($rules)) {
         return false;
     }
     // Get values
     $email = input::post('email');
     $subject = input::post('subject');
     $message = input::post('message') . "\n\n--\n" . input::post('name') . ' <' . input::post('email') . '>' . "\n" . input::ipaddress();
     // Send feedback
     if (!$this->feedback_model->sendFeedback($email, $subject, $message)) {
         if (!validate::getTotalErrors()) {
             view::setError(__('send_error', 'system'));
         }
         return false;
     }
     // Success
     view::setInfo(__('message_sent', 'feedback'));
     router::redirect('feedback');
 }
예제 #2
0
파일: users.php 프로젝트: soremi/tutornavi
 public function delete()
 {
     // Get URI vars
     $typeID = (int) uri::segment(6);
     $fieldID = (int) uri::segment(7);
     // Get user type
     if (!$typeID || !($type = $this->users_types_model->getType($typeID))) {
         view::setError(__('no_type', 'users_types'));
         router::redirect('cp/userstypes');
     }
     // Delete profile question
     $this->deleteField('users', 'users_data_' . $type['keyword'], $typeID, $fieldID);
 }
예제 #3
0
 public function index()
 {
     // Get license details
     if (!($license = $this->license_model->getLicense())) {
         view::setError(__('no_license', 'system_license'));
         router::redirect('cp/help/license/change');
     }
     // Assign vars
     view::assign(array('license' => $license));
     // Set title
     view::setTitle(__('help_license', 'system_navigation'));
     // Load view
     view::load('cp/help/license/view');
 }
예제 #4
0
파일: plans.php 프로젝트: soremi/tutornavi
 public function checkout()
 {
     // Get URI vars
     $planID = (int) uri::segment(4);
     $gatewayID = uri::segment(5);
     // Get plan
     if (!$planID || !($plan = $this->plans_model->getPlan($planID, false)) || !$plan['active']) {
         view::setError(__('no_plan', 'billing_plans'));
         router::redirect('billing/plans');
     }
     $retval = $this->process($gatewayID, session::item('user_id'), 'plans', $planID, $plan['name'], $plan['price'], '', 'billing/plans');
     if (!$retval) {
         router::redirect('billing/plans/payment/' . $planID);
     }
 }
예제 #5
0
 public function checkout()
 {
     // Get URI vars
     $packageID = (int) uri::segment(4);
     $gatewayID = uri::segment(5);
     // Get package
     if (!$packageID || !($package = $this->credits_model->getPackage($packageID)) || !$package['active']) {
         view::setError(__('no_package', 'billing_credits'));
         router::redirect('billing/credits');
     }
     // Set package name
     $name = __('credits_info', 'billing_credits', array('%s' => $package['credits']));
     $retval = $this->process($gatewayID, session::item('user_id'), 'credits', $packageID, $name, $package['price'], '', 'billing/credits');
     if (!$retval) {
         router::redirect('billing/credits/payment/' . $packageID);
     }
 }
예제 #6
0
파일: report.php 프로젝트: soremi/tutornavi
 protected function _submitReport($resource, $resourceID, $userID, $itemID, $subjects)
 {
     // Extra rules
     $rules = array('subject' => array('rules' => $subjects ? array('required', 'callback__is_valid_subject' => array($subjects)) : array('callback__is_valid_subject' => array($subjects))), 'message' => array('rules' => array('is_string', 'trim', 'max_length' => 255)));
     validate::setRules($rules);
     // Validate form values
     if (!validate::run($rules)) {
         return false;
     }
     // Get values
     $subject = $subjects ? (int) input::post('subject') : 0;
     $message = input::post('message');
     // Send feedback
     if (!$this->reports_model->saveReport($resourceID, $userID, $itemID, $subject, $message)) {
         if (!validate::getTotalErrors()) {
             view::setError(__('save_error', 'system'));
         }
         return false;
     }
     // Success
     router::redirect('report/sent' . (input::get('modal') ? '?modal=1' : ''));
 }
예제 #7
0
 protected function process($gatewayID, $userID, $type, $productID, $name, $amount, $params = '', $cancel = '', $success = '')
 {
     // Set return URLs
     $cancel = $cancel ? $cancel : 'users/settings';
     $success = $success ? $success : 'billing/invoices';
     // Get payment type
     if (!($type = $this->payments_model->getPaymentType($type))) {
         return false;
     }
     // Get gateway
     if (!$gatewayID || !($gateway = $this->gateways_model->getGateway($gatewayID)) || !$gateway['active']) {
         view::setError(__('no_gateway', 'billing_gateways'));
         return false;
     }
     // Create invoice
     if (!($invoiceID = $this->transactions_model->saveInvoice(0, $userID, $type['type_id'], $productID, $name, $amount, $params))) {
         view::setError(__('invoice_error', 'billing_transactions'));
         return false;
     }
     // Get invoice
     if (!($invoice = $this->transactions_model->getInvoice($invoiceID))) {
         view::setError(__('no_invoice', 'billing_transactions'));
         return false;
     }
     // Load payment library
     $payment = loader::library('payments/' . $gateway['keyword'], $gateway['settings'], null);
     // Get payment method
     $form = $payment->getForm($invoiceID, $name, $amount, $cancel, $success);
     // Is this a URL?
     if (preg_match('|^\\w+://|i', $form)) {
         router::redirect($form);
     } elseif (preg_match('|^<form|i', $form)) {
         view::load('billing/redirect', array('form' => $form));
         return true;
     }
     view::setError(__('payment_invalid', 'billing_transactions'));
 }
예제 #8
0
 public function edit()
 {
     // 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 meta tags
     if (!($tags = $this->metatags_model->getMetaTags($plugin))) {
         view::setError(__('no_meta_tags', 'system_metatags'));
         router::redirect('cp/system/config/' . $plugin);
     }
     // Process form values
     if (input::post('do_save_meta_tags')) {
         $this->_saveMetaTags($plugin, $tags);
     }
     // Assign vars
     view::assign(array('tags' => $tags));
     // Set title
     view::setTitle(__('system_meta_tags_manage', 'system_navigation'));
     // Set trail
     view::setTrail('cp/system/metatags/edit/' . $plugin, text_helper::entities(config::item('plugins', 'core', $plugin, 'name')));
     // Set actions
     if (count(config::item('languages', 'core', 'keywords')) > 1) {
         view::setAction('translate', '');
     }
     // Set tabs
     foreach ($tags as $keyword => $group) {
         view::setTab('#' . $keyword, __($keyword, $plugin . '_metatags'), array('class' => 'group_' . $keyword));
     }
     // Load view
     view::load('cp/system/metatags/edit');
 }
예제 #9
0
 public function update()
 {
     // Get URI vars
     $plugin = uri::segment(5);
     // Get plugins
     if (!($plugins = $this->recalculate_model->getPlugins())) {
         view::setInfo(__('no_plugins', 'system_plugins'));
         router::redirect('cp/system/config/system');
     }
     // Get captcha
     if (!$plugin || !isset($plugins[$plugin])) {
         view::setError(__('no_plugin', 'utilities_counters'));
         router::redirect('cp/utilities/counters');
     }
     // Load plugin model
     $model = loader::model($plugin . '/' . $plugin, array(), null);
     // Update counters
     $result = $model->updateDbCounters();
     // Do we have redirect uri?
     if (isset($result['output']) && isset($result['redirect'])) {
         $result['redirect'] = $result['redirect'] ? 'update/' . $plugin . '/' . $result['redirect'] : '';
         $result['output'] .= '<br/>' . __('progress_redirect', 'utilities_counters', array(), array('%' => html_helper::anchor('cp/utilities/counters/' . $result['redirect'], '\\1')));
         if (!$result['redirect']) {
             view::setInfo(__('progress_done', 'utilities_counters', array('%1' => $plugins[$plugin])));
         }
         // Assign vars
         view::assign(array('output' => $result['output'], 'redirect' => $result['redirect']));
         if (input::isAjaxRequest()) {
             view::ajaxResponse(array('output' => $result['output'], 'redirect' => $result['redirect']));
         }
     }
     // Set title
     view::setTitle(__('utilities_counters_manage', 'system_navigation') . ' - ' . $plugins[$plugin]);
     // Load view
     view::load('cp/utilities/counters/update');
 }
예제 #10
0
파일: groups.php 프로젝트: soremi/tutornavi
 public function delete()
 {
     // Check if demo mode is enabled
     if (input::demo(1, 'cp/content/banners')) {
         return false;
     }
     // Get URI vars
     $groupID = (int) uri::segment(6);
     // Get banner group
     if (!$groupID || !($group = $this->banners_groups_model->getGroup($groupID))) {
         view::setError(__('no_group', 'banners'));
         router::redirect('cp/content/banners/groups');
     }
     // Delete banner group
     $this->banners_groups_model->deleteGroup($groupID, $group);
     // Success
     view::setInfo(__('group_deleted', 'banners'));
     router::redirect('cp/content/banners/groups');
 }
예제 #11
0
 public function toggle()
 {
     // Get URI vars
     $templateID = (int) uri::segment(5);
     // Get template
     if (!$templateID || !($template = $this->emailtemplates_model->getTemplate($templateID))) {
         view::setError(__('no_template', 'system_email_templates'));
         router::redirect('cp/system/config/system');
     }
     $this->emailtemplates_model->toggleStatus($templateID, $template);
     router::redirect('cp/system/emailtemplates/browse/' . text_helper::entities(config::item('plugins', 'core', $template['plugin'], 'keyword')));
 }
예제 #12
0
 protected function parseCounters($params, $gateways)
 {
     // Set filter fields
     $filters = array(array('name' => __('receipt_id', 'billing_transactions'), 'type' => 'text', 'keyword' => 'receipt_id'), array('name' => __('product', 'billing'), 'type' => 'text', 'keyword' => 'product'), array('name' => __('payment_gateway', 'billing'), 'type' => 'select', 'items' => $gateways, 'keyword' => 'gateway_id'), array('name' => __('user', 'system'), 'type' => 'text', 'keyword' => 'user'));
     // Assign vars
     view::assign(array('filters' => $filters, 'values' => array()));
     // Did user submit the filter form?
     if (input::post_get('do_search')) {
         $values = array();
         // Check extra product field
         $product = input::post_get('product');
         if ($product != '') {
             $params['join_columns'][] = "`i`.`name` LIKE '" . trim($this->db->escape($product, true), "'") . "'";
             $values['product'] = $product;
         }
         // Check extra receipt field
         $receipt_id = input::post_get('receipt_id');
         if ($receipt_id != '') {
             $params['join_columns'][] = "`t`.`receipt_id`=" . $this->db->escape($receipt_id);
             $values['receipt_id'] = $receipt_id;
         }
         // Check extra gateway field
         $gateway_id = input::post_get('gateway_id');
         if ($gateway_id && isset($gateways[$gateway_id])) {
             $params['join_columns'][] = "`t`.`gateway_id`=" . $gateway_id;
             $values['gateway_id'] = $gateway_id;
         }
         // Check extra user field
         $user = utf8::trim(input::post_get('user'));
         if ($user) {
             $params['join_columns'][] = $this->search_model->prepareValue($user, 'u', 'user');
             $values['user'] = $user;
         }
         // Search transactions
         $searchID = $this->search_model->searchData('billing_transaction', $filters, $params['join_columns'], $values);
         // Do we have any search terms?
         if ($searchID == 'no_terms') {
             view::setError(__('search_no_terms', 'system'));
         } elseif ($searchID == 'no_results') {
             view::setError(__('search_no_results', 'system'));
             $params['total'] = 0;
             return $params;
         } else {
             router::redirect('cp/billing/transactions?search_id=' . $searchID);
         }
     }
     // Do we have a search ID?
     if (!input::post_get('do_search') && input::get('search_id')) {
         // Get search
         if (!($search = $this->search_model->getSearch(input::get('search_id')))) {
             view::setError(__('search_expired', 'system'));
             router::redirect('cp/billing/transactions');
         }
         // Combine results
         $params['join_columns'] = $search['conditions']['columns'];
         $params['values'] = $search['values'];
         $params['total'] = $search['results'];
         // Assign vars
         view::assign(array('values' => $search['values']));
     } else {
         // Count transactions
         if (!($params['total'] = $this->counters_model->countData('billing_transaction', 0, 0, $params['join_columns'], array(), $params))) {
             view::setInfo(__('no_transactions', 'billing_transactions'));
         }
     }
     return $params;
 }
예제 #13
0
파일: pages.php 프로젝트: soremi/tutornavi
 public function delete($parentID = false, $actionID = false)
 {
     // Get URI vars
     $parentID = $parentID ? $parentID : (int) uri::segment(5);
     $pageID = $actionID ? $actionID : (int) uri::segment(6);
     // Check if demo mode is enabled
     if (input::demo(1, 'cp/content/pages/browse/' . $parentID)) {
         return false;
     }
     // Get parent
     if ($parentID && !($parent = $this->pages_model->getPage($parentID))) {
         view::setError(__('no_parent', 'pages'));
         router::redirect('cp/content/pages/browse/' . $parentID);
     }
     // Get page
     if (!$pageID || !($page = $this->pages_model->getPage($pageID)) || $page['parent_id'] != $parentID) {
         view::setError(__('no_page', 'pages'));
         router::redirect('cp/content/pages/browse/' . $parentID);
     } elseif ($page['system']) {
         view::setError(__('page_system_delete', 'pages'));
         router::redirect('cp/content/pages/browse/' . $parentID);
     }
     // Delete page
     $this->pages_model->deletePage($pageID, $page);
     // Is this an action call?
     if ($actionID) {
         return;
     }
     // Process query string
     $qstring = $this->parseQuerystring();
     // Success
     view::setInfo(__('page_deleted', 'pages'));
     router::redirect('cp/content/pages/browse/' . $parentID . '?' . $qstring['url']);
 }
예제 #14
0
파일: news.php 프로젝트: soremi/tutornavi
 protected function parseCounters($params = array())
 {
     // Assign vars
     view::assign(array('filters' => array(), 'values' => array()));
     // Do we have permission to search?
     if (session::permission('news_search', 'news')) {
         // Get fields
         $filters = $this->fields_model->getFields('news', 0, 'edit', 'in_search', true);
         // Set extra fields
         $filters[] = array('name' => __('search_keyword', 'system'), 'type' => 'text', 'keyword' => 'q');
         // Assign vars
         view::assign(array('filters' => $filters));
         // Did user submit the filter form?
         if (input::post_get('do_search') && session::permission('news_search', 'news')) {
             $values = array();
             $params['total'] = $params['max'] = 0;
             // Check extra keyword
             $keyword = utf8::trim(input::post_get('q'));
             if ($keyword) {
                 $params['join_columns'][] = $this->search_model->prepareValue($keyword, 'n', array('data_title_' . session::item('language'), 'data_body_' . session::item('language')));
                 $values['q'] = $keyword;
             }
             // Search news
             $searchID = $this->search_model->searchData('news', $filters, $params['join_columns'], $values, array('multilang' => true));
             // Do we have any search terms?
             if ($searchID == 'no_terms') {
                 view::setError(__('search_no_terms', 'system'));
             } elseif ($searchID == 'no_results') {
                 view::setError(__('search_no_results', 'system'));
                 return $params;
             } else {
                 router::redirect('news?search_id=' . $searchID);
             }
         }
         // Do we have a search ID?
         if (!input::post_get('do_search') && input::get('search_id')) {
             // Get search
             if (!($search = $this->search_model->getSearch(input::get('search_id')))) {
                 view::setError(__('search_expired', 'system'));
                 router::redirect('news');
             }
             // Set results
             $params['join_columns'] = $search['conditions']['columns'];
             $params['join_items'] = $search['conditions']['items'];
             $params['values'] = $search['values'];
             $params['total'] = $search['results'];
             $params['max'] = config::item('max_search_results', 'system') && config::item('max_search_results', 'system') < $params['total'] ? config::item('max_search_results', 'system') : $params['total'];
             // Assign vars
             view::assign(array('values' => $search['values']));
         }
     }
     if (!input::get('search_id')) {
         // Count news
         if (!($params['total'] = $this->counters_model->countData('news', 0, 0, $params['join_columns'], $params['join_items'], $params))) {
             view::setInfo(__('no_entries', 'news'));
         }
         $params['max'] = $params['total'];
     }
     return $params;
 }
예제 #15
0
 public function delete()
 {
     // Check if demo mode is enabled
     if (input::demo(1, 'cp/content/newsletters')) {
         return false;
     }
     // Get URI vars
     $newsletterID = (int) uri::segment(5);
     // Get newsletter
     if (!$newsletterID || !($newsletter = $this->newsletters_model->getNewsletter($newsletterID))) {
         view::setError(__('no_newsletter', 'newsletters'));
         router::redirect('cp/content/newsletters');
     }
     // Delete newsletter
     $this->newsletters_model->deleteNewsletter($newsletterID, $newsletter);
     // Success
     view::setInfo(__('newsletter_deleted', 'newsletters'));
     router::redirect('cp/content/newsletters');
 }
예제 #16
0
파일: albums.php 프로젝트: soremi/tutornavi
 protected function parseCounters($params)
 {
     // Get fields
     $filters = $this->fields_model->getFields('pictures', 1, 'edit', 'in_search', true);
     // Set extra fields
     $filters[] = array('name' => __('search_keyword', 'system'), 'type' => 'text', 'keyword' => 'q');
     $filters[] = array('name' => __('user', 'system'), 'type' => 'text', 'keyword' => 'user');
     // Assign vars
     view::assign(array('filters' => $filters, 'values' => array()));
     // Did user submit the filter form?
     if (input::post_get('do_search')) {
         $values = array();
         // Check extra keyword
         $keyword = utf8::trim(input::post_get('q'));
         if ($keyword) {
             $params['join_columns'][] = $this->search_model->prepareValue($keyword, 'a', array('data_title', 'data_description'));
             $values['q'] = $keyword;
         }
         // Check extra user field
         $user = utf8::trim(input::post_get('user'));
         if ($user) {
             $params['join_columns'][] = $this->search_model->prepareValue($user, 'u', 'user');
             $values['user'] = $user;
         }
         // Search albums
         $searchID = $this->search_model->searchData('picture_album', $filters, $params['join_columns'], $values);
         // Do we have any search terms?
         if ($searchID == 'no_terms') {
             view::setError(__('search_no_terms', 'system'));
         } elseif ($searchID == 'no_results') {
             view::setError(__('search_no_results', 'system'));
             $params['total'] = 0;
             return $params;
         } else {
             router::redirect('cp/plugins/pictures/albums?search_id=' . $searchID);
         }
     }
     // Do we have a search ID?
     if (!input::post_get('do_search') && input::get('search_id')) {
         // Get search
         if (!($search = $this->search_model->getSearch(input::get('search_id')))) {
             view::setError(__('search_expired', 'system'));
             router::redirect('cp/plugins/pictures/albums');
         }
         // Combine results
         $params['join_columns'] = $search['conditions']['columns'];
         $params['join_items'] = $search['conditions']['items'];
         $params['values'] = $search['values'];
         $params['total'] = $search['results'];
         // Assign vars
         view::assign(array('values' => $search['values']));
     } else {
         // Count albums
         if (!($params['total'] = $this->counters_model->countData('picture_album', 0, 0, $params['join_columns'], $params['join_items'], $params))) {
             view::setInfo(__('no_albums', 'pictures'));
         }
     }
     return $params;
 }
예제 #17
0
 public function translate()
 {
     // Get URI vars
     $plugin = uri::segment(5);
     $language = uri::segment(6);
     // Get plugin
     if (!config::item('plugins', 'core', $plugin)) {
         view::setError(__('no_plugin', 'system_plugins'));
         router::redirect('cp/system/languages/plugins/' . $language);
     }
     // Is this a system language?
     if ($language == 'system') {
         $language = array('keyword' => 'system', 'name' => 'System');
     } elseif (!($language = $this->languages_model->getLanguage($language))) {
         view::setError(__('no_language', 'system_languages'));
         router::redirect('cp/system/languages');
     }
     // Get default language data
     if (!($default = $this->languages_model->getLanguageData('system', $plugin))) {
         view::setError(__('no_language', 'system_languages'));
         router::redirect('cp/system/languages');
     }
     // Get language data
     if (!($data = $this->languages_model->getLanguageData($language['keyword'], $plugin, true))) {
         view::setError(__('no_language', 'system_languages'));
         router::redirect('cp/system/languages');
     }
     // Set language sections
     $sections = array();
     foreach ($data as $section => $groups) {
         foreach ($groups as $group => $types) {
             $translated = $total = 0;
             foreach ($types as $type => $items) {
                 foreach ($items as $index => $value) {
                     if (utf8::strcasecmp($default[$section][$group][$type][$index], $value)) {
                         $translated++;
                     }
                     $total++;
                 }
             }
             $translated = $translated ? round($translated / $total * 100) : 0;
             $translated = $translated > 100 ? 100 : $translated;
             if (__('language_' . $group, $plugin . '_config') !== false) {
                 $name = __('language_' . $group, $plugin . '_config');
             } elseif (__('language_' . $group, 'users_config') !== false) {
                 $name = __('language_' . $group, 'users_config');
             } elseif (__('language_' . $group, 'system_config') !== false) {
                 $name = __('language_' . $group, 'system_config');
             } elseif ($section == $group) {
                 $name = __('language_system', 'system_config');
             } else {
                 $name = '!' . $group;
             }
             $sections[$section . '_' . $group] = '[' . config::item('plugins', 'core', $section, 'name') . '] ' . $name . ($language['keyword'] != 'english' ? ' - ' . $translated . '%' : '') . (config::item('devmode', 'system') == 2 ? ' [' . $group . ']' : '');
         }
     }
     asort($sections);
     // Assign vars
     view::assign(array('plugin' => $plugin, 'default' => $default, 'sections' => $sections, 'language' => $data));
     // Process form values
     if (input::post('do_save_language')) {
         $this->_saveLanguageData($plugin, $language['keyword'], $default);
     }
     // Set title
     view::setTitle(__('language_translate', 'system_languages'));
     // Set trail
     view::setTrail('cp/system/languages/plugins/' . $language['keyword'], __('language_translate', 'system_languages') . ' - ' . text_helper::entities($language['name']));
     view::setTrail('cp/system/languages/translate/' . $plugin . '/' . $language['keyword'], text_helper::entities(config::item('plugins', 'core', $plugin, 'name')));
     // Load view
     view::load('cp/system/languages/translate');
 }
예제 #18
0
파일: albums.php 프로젝트: soremi/tutornavi
 protected function parseCounters($params = array(), $type = 'index')
 {
     // Assign vars
     view::assign(array('filters' => array(), 'values' => array()));
     // Do we have permission to search?
     if (session::permission('albums_search', 'pictures')) {
         // Get fields
         $filters = $this->fields_model->getFields('pictures', 1, 'edit', 'in_search', true);
         // Set extra fields
         $filters[] = array('name' => __('search_keyword', 'system'), 'type' => 'text', 'keyword' => 'q');
         // Assign vars
         view::assign(array('filters' => $filters));
         // Did user submit the filter form?
         if (input::post_get('do_search') && session::permission('albums_search', 'pictures')) {
             $values = array();
             $params['total'] = $params['max'] = 0;
             // Check extra keyword
             $keyword = utf8::trim(input::post_get('q'));
             if ($keyword) {
                 $params['join_columns'][] = $this->search_model->prepareValue($keyword, 'a', array('data_title', 'data_description'));
                 $values['q'] = $keyword;
             }
             // Search albums
             $searchID = $this->search_model->searchData('picture_album', $filters, $params['join_columns'], $values);
             // Do we have any search terms?
             if ($searchID == 'no_terms') {
                 view::setError(__('search_no_terms', 'system'));
             } elseif ($searchID == 'no_results') {
                 view::setError(__('search_no_results', 'system'));
                 return $params;
             } else {
                 switch ($type) {
                     case 'user':
                         router::redirect('pictures/user/' . uri::segment(4) . '?search_id=' . $searchID);
                         break;
                     case 'manage':
                         router::redirect('pictures/manage?search_id=' . $searchID);
                         break;
                     default:
                         router::redirect('pictures?search_id=' . $searchID);
                         break;
                 }
             }
         }
         // Do we have a search ID?
         if (!input::post_get('do_search') && input::get('search_id')) {
             // Get search
             if (!($search = $this->search_model->getSearch(input::get('search_id')))) {
                 view::setError(__('search_expired', 'system'));
                 switch ($type) {
                     case 'user':
                         router::redirect('pictures/user/' . uri::segment(4));
                         break;
                     case 'manage':
                         router::redirect('pictures/manage');
                         break;
                     default:
                         router::redirect('pictures');
                         break;
                 }
             }
             // Set results
             $params['join_columns'] = $search['conditions']['columns'];
             $params['join_items'] = $search['conditions']['items'];
             $params['values'] = $search['values'];
             $params['total'] = $search['results'];
             $params['max'] = config::item('max_search_results', 'system') && config::item('max_search_results', 'system') < $params['total'] ? config::item('max_search_results', 'system') : $params['total'];
             // Assign vars
             view::assign(array('values' => $search['values']));
         }
     }
     if (!input::get('search_id')) {
         // Count albums
         if ($type == 'manage' && !$params['total'] || $type != 'manage' && !($params['total'] = $this->counters_model->countData('picture_album', 0, 0, $params['join_columns'], $params['join_items'], $params))) {
             if ($type == 'manage') {
                 view::setInfo(__('no_albums_self', 'pictures'));
             } else {
                 view::setInfo(__('no_albums', 'pictures'));
             }
         }
         $params['max'] = $params['total'];
     }
     return $params;
 }
예제 #19
0
 public function delete()
 {
     // Get URI vars
     $groupID = (int) uri::segment(5);
     $bannerID = (int) uri::segment(6);
     // Check if demo mode is enabled
     if (input::demo(1, 'cp/content/banners/browse/' . $groupID)) {
         return false;
     }
     // Get banner
     if (!$bannerID || !($banner = $this->banners_model->getBanner($bannerID))) {
         view::setError(__('no_banner', 'banners'));
         router::redirect('cp/content/banners/browse/' . $groupID);
     }
     $this->banners_model->deleteBanner($groupID, $bannerID, $banner);
     view::setInfo(__('banner_deleted', 'banners'));
     router::redirect('cp/content/banners/browse/' . $groupID);
 }
예제 #20
0
파일: system.php 프로젝트: soremi/tutornavi
 protected function deleteField($plugin, $table, $categoryID, $fieldID)
 {
     // Check if demo mode is enabled
     if (input::demo(1, 'cp/system/fields/' . $plugin . '/browse' . ($categoryID ? '/' . $categoryID : ''))) {
         return false;
     }
     // Get field
     if (!($field = $this->fields_model->getField($fieldID))) {
         view::setError(__('no_field', 'system_fields'));
         router::redirect('cp/system/fields/' . $plugin . '/browse/' . $categoryID);
     }
     // Is this a system field?
     if ($field['system']) {
         view::setError(__('no_system_delete', 'system_fields'));
         router::redirect('cp/system/fields/' . $plugin . '/browse/' . $categoryID);
     }
     // Delete field
     if (!$this->fieldsdb_model->deleteField($plugin, $table, $fieldID, $field)) {
         view::setError(__('db_no_column_drop', 'system_fields'));
         router::redirect('cp/system/fields/' . $plugin . '/browse/' . $categoryID);
     }
     // Success
     view::setInfo(__('field_deleted', 'system_fields'));
     router::redirect('cp/system/fields/' . $plugin . '/browse' . ($categoryID ? '/' . $categoryID : ''));
 }
예제 #21
0
 public function delete()
 {
     // Check if demo mode is enabled
     if (input::demo(1, 'cp/content/reports/subjects')) {
         return false;
     }
     // Get URI vars
     $subjectID = (int) uri::segment(6);
     // Get subject
     if (!$subjectID || !($subject = $this->reports_subjects_model->getSubject($subjectID))) {
         view::setError(__('no_subject', 'reports_subjects'));
         router::redirect('cp/content/reports/subjects');
     }
     // Delete subject
     $this->reports_subjects_model->deleteSubject($subjectID, $subject);
     // Success
     view::setInfo(__('subject_deleted', 'reports_subjects'));
     router::redirect('cp/content/reports/subjects');
 }
예제 #22
0
파일: users.php 프로젝트: soremi/tutornavi
 protected function parseCounters($params = array())
 {
     // Get fields
     $filters = array();
     if (count(config::item('usertypes', 'core', 'keywords')) > 1) {
         // Set extra fields
         $filters[] = array('name' => __('user_type', 'users'), 'type' => 'select', 'keyword' => 'type_id', 'items' => config::item('usertypes', 'core', 'names'), 'select' => 1);
         foreach (config::item('usertypes', 'core', 'keywords') as $id => $type) {
             $filters['types'][$id] = $this->fields_model->getFields('users', $id, 'edit', input::get('a') ? 'in_search_advanced' : 'in_search', true);
         }
     } else {
         $filters = $this->fields_model->getFields('users', config::item('type_default_id', 'users'), 'edit', input::get('a') ? 'in_search_advanced' : 'in_search', true);
     }
     // Additional options
     $options = array();
     // Pictures
     if (config::item('search_option_picture', 'users')) {
         $options['pictures'] = __('search_option_picture', 'users', array(), array(), false);
     }
     // Online
     if (config::item('search_option_online', 'users')) {
         $options['online'] = __('search_option_online', 'users', array(), array(), false);
     }
     if ($options) {
         $filters[] = array('name' => __('search_options', 'system', array(), array(), false), 'type' => 'checkbox', 'keyword' => 'search_options', 'items' => $options);
     }
     // Assign vars
     view::assign(array('filters' => $filters, 'values' => array()));
     // Did user submit the filter form?
     if (input::post_get('do_search')) {
         $values = array();
         $params['total'] = $params['max'] = 0;
         // Check extra pictures field
         $pictures = in_array('pictures', input::post_get('search_options', array()));
         if ($pictures) {
             $params['join_columns'][] = "`u`.`picture_id`!='' AND `u`.`picture_active`=1";
             $values['search_options'][] = 'pictures';
         }
         // Check extra online field
         $online = in_array('online', input::post_get('search_options', array()));
         if ($online) {
             $params['join_columns'][] = "`u`.`visit_date`>=" . (date_helper::now() - 60 * 5);
             $values['search_options'][] = 'online';
         }
         // Check extra type field
         $typeID = count(config::item('usertypes', 'core', 'keywords')) > 1 ? input::post_get('type_id') : config::item('type_default_id', 'users');
         if (config::item('usertypes', 'core', 'keywords', $typeID)) {
             $params['join_columns'][] = '`u`.`type_id`=' . $typeID;
             $values['type_id'] = $typeID;
             // Search users
             $searchID = $this->search_model->searchData('profile', $filters, $params['join_columns'], $values, array('type_id' => $typeID));
             // Do we have any search terms?
             if ($searchID == 'no_terms') {
                 view::setError(__('search_no_terms', 'system'));
             } elseif ($searchID == 'no_results') {
                 view::setError(__('search_no_results', 'system'));
                 return $params;
             } else {
                 router::redirect('users/results?' . (input::get('a') ? 'a=1&' : '') . 'search_id=' . $searchID);
             }
         } else {
             view::setError(__('search_no_type', 'users'));
         }
     }
     // Do we have a search ID?
     if (!input::post_get('do_search') && input::get('search_id')) {
         // Get search
         if (!($search = $this->search_model->getSearch(input::get('search_id')))) {
             view::setError(__('search_expired', 'system'));
             router::redirect('users');
         }
         // Set results
         $params['join_columns'] = $search['conditions']['columns'];
         $params['join_items'] = $search['conditions']['items'];
         $params['values'] = $search['values'];
         $params['total'] = $search['results'];
         $params['max'] = config::item('max_search_results', 'system') && config::item('max_search_results', 'system') < $params['total'] ? config::item('max_search_results', 'system') : $params['total'];
         // Assign vars
         view::assign(array('values' => $search['values']));
     }
     return $params;
 }
예제 #23
0
 public function delete()
 {
     // Get URI vars
     $slugID = urldecode(utf8::trim(uri::segment(4)));
     // Do we have a slug ID?
     if ($slugID == '') {
         error::show404();
     }
     // Get user
     if (!($user = $this->users_model->getUser($slugID)) || !$user['active'] || !$user['verified']) {
         error::show404();
     } elseif ($user['user_id'] == session::item('user_id')) {
         router::redirect($user['slug']);
     }
     // Does user exist?
     if (!($blocked = $this->users_blocked_model->getUser($user['user_id'], true))) {
         view::setError(__('no_blocked_user', 'users_blocked'));
         router::redirect('users/blocked');
     }
     // Delete blocked user
     $this->users_blocked_model->deleteBlockedUser(session::item('user_id'), $user['user_id']);
     // Success
     view::setInfo(__('user_unblocked', 'users_blocked'));
     router::redirect(input::get('page') ? 'users/blocked' : $user['slug']);
 }
예제 #24
0
파일: plans.php 프로젝트: soremi/tutornavi
 public function delete()
 {
     // Check if demo mode is enabled
     if (input::demo(1, 'cp/billing/plans')) {
         return false;
     }
     // Get URI vars
     $planID = (int) uri::segment(5);
     // Get plan
     if (!$planID || !($plan = $this->plans_model->getPlan($planID))) {
         view::setError(__('no_plan', 'billing_plans'));
         router::redirect('cp/billing/plans');
     }
     // Delete plan
     $this->plans_model->deletePlan($planID, $plan);
     // Success
     view::setInfo(__('plan_deleted', 'billing_plans'));
     router::redirect('cp/billing/plans');
 }
예제 #25
0
 public function delete()
 {
     // Check if demo mode is enabled
     if (input::demo(1, 'cp/plugins/messages/templates')) {
         return false;
     }
     // Get URI vars
     $templateID = (int) uri::segment(6);
     // Get template
     if (!$templateID || !($template = $this->messages_templates_model->getTemplate($templateID))) {
         view::setError(__('no_template', 'messages_templates'));
         router::redirect('cp/plugins/messages/templates');
     }
     // Delete template
     $this->messages_templates_model->deleteTemplate($templateID, $template);
     // Success
     view::setInfo(__('template_deleted', 'messages_templates'));
     router::redirect('cp/plugins/messages/templates');
 }
예제 #26
0
파일: login.php 프로젝트: soremi/tutornavi
 protected function _resendHash()
 {
     // Create rules
     $rules = array('email' => array('label' => 'email', 'rules' => array('trim', 'required', 'max_length' => 255, 'valid_email')));
     // Assign rules
     validate::setRules($rules);
     // Validate fields
     if (!validate::run()) {
         return false;
     }
     // Does user exist?
     if (!($user = $this->users_model->getUser(input::post('email')))) {
         validate::setFieldError('email', __('email_invalid', 'users_signup'));
         return false;
     }
     // Is user's email already verified?
     if ($user['verified']) {
         view::setError(__('user_already_verified', 'users_signup'));
         return false;
     }
     // Loader
     loader::library('email');
     loader::model('system/requests');
     // Is this a recent request?
     if ($this->requests_model->isRecentRequest('signup', $user['user_id'], 0, 5)) {
         // Success
         view::setError(__('request_recent_sendhash', 'users_signup'));
         return false;
     }
     // Save resend hash request
     $hash = $this->requests_model->saveRequest('signup', $user['user_id']);
     $user['security_hash'] = $hash;
     $user['activation_link'] = config::siteURL('users/signup/confirm/' . $user['user_id'] . '/' . $hash);
     // Send activation email
     $this->email->sendTemplate('users_account_confirm', $user['email'], $user, $user['language_id']);
     // Success
     view::setInfo(__('confirm_email', 'users_signup'));
     router::redirect('users/login/index/verify');
 }
예제 #27
0
파일: types.php 프로젝트: soremi/tutornavi
 public function delete()
 {
     // Check if demo mode is enabled
     if (input::demo(1, 'cp/users/types')) {
         return false;
     }
     // Get URI vars
     $typeID = (int) uri::segment(5);
     // Is this one of the system types?
     if ($typeID == config::item('type_default_id', 'users')) {
         view::setError(__('type_delete_system', 'users_types'));
         router::redirect('cp/users/types');
     }
     // Is this member's own type?
     if ($typeID == session::item('type_id')) {
         view::setError(__('type_delete_self', 'users_types'));
         router::redirect('cp/users/types');
     }
     // Get user type
     if (!$typeID || !($type = $this->users_types_model->getType($typeID))) {
         view::setError(__('no_type', 'users_types'));
         router::redirect('cp/users/types');
     }
     // Do we have any members of this type?
     if ($this->users_types_model->isUsers($typeID)) {
         view::setError(__('type_delete_users', 'users_types'));
         router::redirect('cp/users/types');
     }
     // Delete user type
     if (!$this->users_types_model->deleteType($typeID, $type)) {
         view::setError(__('db_no_drop', 'system_fields'));
         router::redirect('cp/users/types');
     }
     // Success
     view::setInfo(__('type_deleted', 'users_types'));
     router::redirect('cp/users/types');
 }
예제 #28
0
 public function vote()
 {
     // Is user logged in?
     if (!users_helper::isLoggedin()) {
         view::ajaxError(__('no_login', 'system_info'), 403);
     }
     // Get vars
     $resource = input::post_get('resource');
     $itemID = (int) input::post_get('item_id');
     $score = (int) input::post_get('score');
     // Get resource ID
     $resourceID = config::item('resources', 'core', $resource, 'resource_id');
     if (!$resourceID || !$itemID || $score < 1 || $score > 5) {
         return false;
     }
     // Load votes model
     loader::model('comments/votes');
     // Get resource item and vote if exists
     $item = $this->votes_model->getResourceVote($resource, $itemID);
     // Do resource or vote exist?
     if (!$item || $item['post_date']) {
         return false;
     }
     // Save vote
     if (!$this->votes_model->saveVote($resource, isset($item['user_id']) ? $item['user_id'] : 0, $itemID, $score)) {
         if (!validate::getTotalErrors()) {
             view::setError(__('save_error', 'system'));
         }
         return false;
     }
     $rating = number_format(($item['total_score'] + $score) / ($item['total_votes'] + 1), 2);
     $params = array('resource' => $resource, 'itemID' => $itemID, 'votes' => $item['total_votes'] + 1, 'score' => $item['total_score'], 'rating' => $rating, 'voted' => $score, 'date' => date_helper::now());
     $output = view::load('comments/rating', $params, true);
     view::ajaxResponse($output);
 }
예제 #29
0
파일: users.php 프로젝트: soremi/tutornavi
 protected function parseCounters($params, $typeID)
 {
     // Set filters
     $filters = array(array('name' => __('user', 'system'), 'type' => 'text', 'keyword' => 'user'), array('name' => __('user_group', 'users'), 'type' => 'select', 'keyword' => 'group', 'items' => config::item('usergroups', 'core')), array('name' => __('user_type', 'users'), 'type' => 'select', 'keyword' => 'type_id', 'items' => config::item('usertypes', 'core', 'names')));
     foreach (config::item('usertypes', 'core', 'keywords') as $id => $type) {
         $filters['types'][$id] = $this->fields_model->getFields('users', $id, 'edit');
     }
     $filters[] = array('name' => __('verified', 'users'), 'type' => 'boolean', 'keyword' => 'verified');
     $filters[] = array('name' => __('active', 'system'), 'type' => 'boolean', 'keyword' => 'active');
     // Assign vars
     view::assign(array('filters' => $filters, 'values' => array()));
     // Did user submit the filter form?
     if (input::post_get('do_search')) {
         $values = array();
         // Check extra user field
         $user = utf8::trim(input::post_get('user'));
         if ($user) {
             $params['join_columns'][] = $this->search_model->prepareValue($user, 'u', 'user');
             $values['user'] = $user;
         }
         // Check extra verified field
         $verified = input::post_get('verified');
         if ($verified != '') {
             $params['join_columns'][] = '`u`.`verified`=' . (int) $verified;
             $values['verified'] = $verified;
         }
         // Check extra status field
         $status = input::post_get('active');
         if ($status != '') {
             $params['join_columns'][] = '`u`.`active`=' . (int) $status;
             $values['active'] = $status;
         }
         // Check extra group field
         $group = input::post_get('group');
         if ($group != '' && config::item('usergroups', 'core', $group)) {
             $params['join_columns'][] = '`u`.`group_id`=' . $group;
             $values['group'] = $group;
         }
         // Check extra type field
         $typeID = input::post_get('type_id');
         if ($typeID != '' && config::item('usertypes', 'core', 'keywords', $typeID)) {
             $params['join_columns'][] = '`u`.`type_id`=' . $typeID;
             $values['type_id'] = $typeID;
         }
         // Search users
         $searchID = $this->search_model->searchData('profile', $filters, $params['join_columns'], $values, array('type_id' => $typeID));
         // Do we have any search terms?
         if ($searchID == 'no_terms') {
             view::setError(__('search_no_terms', 'system'));
         } elseif ($searchID == 'no_results') {
             view::setError(__('search_no_results', 'system'));
             $params['total'] = 0;
             return $params;
         } else {
             router::redirect('cp/users?search_id=' . $searchID);
         }
     }
     // Do we have a search ID?
     if (!input::post_get('do_search') && input::get('search_id')) {
         // Get search
         if (!($search = $this->search_model->getSearch(input::get('search_id')))) {
             view::setError(__('search_expired', 'system'));
             router::redirect('cp/users');
         }
         // Combine results
         $params['join_columns'] = $search['conditions']['columns'];
         $params['join_items'] = $search['conditions']['items'];
         $params['values'] = $search['values'];
         $params['total'] = $search['results'];
         // Assign vars
         view::assign(array('values' => $search['values']));
     } else {
         // Count users
         if (!($params['total'] = $this->counters_model->countData('user', 0, 0, $params['join_columns'], $params['join_items'], $params))) {
             view::setInfo(__('no_users', 'users'));
         }
     }
     return $params;
 }
예제 #30
0
 public function delete()
 {
     // Is user loggedin ?
     if (!users_helper::isLoggedin()) {
         router::redirect('users/login');
     }
     // Get URI vars
     $slugID = urldecode(utf8::trim(uri::segment(4)));
     // Do we have a slug ID?
     if ($slugID == '') {
         error::show404();
     }
     // Get user
     if (!($user = $this->users_model->getUser($slugID)) || !$user['active'] || !$user['verified']) {
         error::show404();
     } elseif ($user['user_id'] == session::item('user_id')) {
         router::redirect($user['slug']);
     }
     // Does friend exist?
     if (!($friend = $this->users_friends_model->getFriend($user['user_id'], false))) {
         view::setError(__('no_friend', 'users_friends'));
         router::redirect($user['slug']);
     }
     // Delete friend
     $this->users_friends_model->deleteFriend($friend['user_id'], $friend['friend_id'], $friend['active']);
     // Success
     view::setInfo(__($friend['active'] ? 'friend_deleted' : 'friend_canceled', 'users_friends'));
     router::redirect(input::get('page') ? 'users/friends/requests' : $user['slug']);
 }