Example #1
0
 protected function _savePackage($packageID)
 {
     // Check if demo mode is enabled
     if (input::demo()) {
         return false;
     }
     // Create rules
     $rules = array('credits' => array('label' => __('credits', 'billing_credits'), 'rules' => array('trim', 'required', 'is_natural_no_zero')), 'price' => array('label' => __('price', 'billing'), 'rules' => array('trim', 'required', 'numeric')), 'active' => array('label' => __('active', 'system'), 'rules' => array('trim', 'required', 'intval')));
     // Assign rules
     validate::setRules($rules);
     // Validate fields
     if (!validate::run()) {
         return false;
     }
     // Get post data
     $package = input::post(array('credits', 'price', 'active'));
     // Save banner group
     if (!($packageID = $this->credits_model->savePackage($packageID, $package))) {
         view::setError(__('save_error', 'system'));
         return false;
     }
     // Success
     view::setInfo(__('package_saved', 'billing_credits'));
     router::redirect('cp/billing/credits/edit/' . $packageID);
 }
Example #2
0
 protected function _saveGroup($groupID)
 {
     // Check if demo mode is enabled
     if (input::demo()) {
         return false;
     }
     // Create rules
     $rules = array('name' => array('label' => __('name', 'system'), 'rules' => array('trim', 'required', 'max_length' => 255)), 'keyword' => array('label' => __('keyword', 'system'), 'rules' => array('trim', 'required', 'max_length' => 128, 'alpha_dash', 'strtolower', 'callback__is_unique_keyword' => $groupID)));
     // Assign rules
     validate::setRules($rules);
     // Validate fields
     if (!validate::run()) {
         return false;
     }
     // Get post data
     $groupData = input::post(array('name', 'keyword'));
     // Save banner group
     if (!($groupID = $this->banners_groups_model->saveGroup($groupID, $groupData))) {
         view::setError(__('save_error', 'system'));
         return false;
     }
     // Success
     view::setInfo(__('group_saved', 'banners'));
     router::redirect('cp/content/banners/groups/edit/' . $groupID);
 }
Example #3
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');
 }
Example #4
0
 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' : ''));
 }
Example #5
0
 protected function _saveComment($resource, $itemID)
 {
     // Is user logged in?
     if (!users_helper::isLoggedin()) {
         return false;
     }
     // Create rules
     $rules = array('comment' => array('label' => __('comment_body', 'comments'), 'rules' => array('trim', 'required', 'min_length' => config::item('min_length', 'comments'), 'max_length' => config::item('max_length', 'comments'), 'callback__is_comments_delay')));
     // Assign rules
     validate::setRules($rules);
     // Validate fields
     if (!validate::run()) {
         return false;
     }
     // Get comment
     $comment = array('comment' => input::post('comment'));
     // Get table and column names
     $table = config::item('resources', 'core', $resource, 'table');
     $column = config::item('resources', 'core', $resource, 'column');
     $user = config::item('resources', 'core', $resource, 'user');
     // Get resource item
     $item = $this->db->query("SELECT `" . $column . "` " . ($user ? ', `' . $user . '` AS `user_id`' : '') . "\n\t\t\tFROM `:prefix:" . $table . "`\n\t\t\tWHERE `" . $column . "`=? LIMIT 1", array($itemID))->row();
     // Does resource exist?
     if (!$item) {
         return false;
     }
     // Save comment
     if (!$this->comments_model->saveComment(0, $comment, $resource, isset($item['user_id']) ? $item['user_id'] : 0, $itemID)) {
         if (!validate::getTotalErrors()) {
             view::setError(__('save_error', 'system'));
         }
         return false;
     }
     // Reset post values
     $_POST['comment'] = '';
     validate::resetRules();
     return true;
 }
Example #6
0
 protected function _saveField($plugin, $table, $categoryID, $fieldID, $fieldOld, $configs, $hidden)
 {
     // Check if demo mode is enabled
     if (input::demo()) {
         return false;
     }
     // Rules array
     $rules = array();
     // Data array
     $inputData = array('keyword', 'type', 'style', 'class', 'required', 'system', 'multilang');
     // Name
     foreach (config::item('languages', 'core', 'keywords') as $languageID => $lang) {
         $rules['name_' . $lang] = array('label' => __('name', 'system_fields') . (count(config::item('languages', 'core', 'keywords')) > 1 ? ' [' . config::item('languages', 'core', 'names', $languageID) . ']' : ''), 'rules' => array('trim', 'required', 'max_length' => 255));
         $rules['vname_' . $lang] = array('label' => __('name_view', 'system_fields') . (count(config::item('languages', 'core', 'keywords')) > 1 ? ' [' . config::item('languages', 'core', 'names', $languageID) . ']' : ''), 'rules' => array('trim', 'max_length' => 255));
         $rules['sname_' . $lang] = array('label' => __('name_search', 'system_fields') . (count(config::item('languages', 'core', 'keywords')) > 1 ? ' [' . config::item('languages', 'core', 'names', $languageID) . ']' : ''), 'rules' => array('trim', 'max_length' => 255));
         $rules['validate_error_' . $lang] = array('label' => __('validate_error', 'system_fields') . (count(config::item('languages', 'core', 'keywords')) > 1 ? ' [' . config::item('languages', 'core', 'names', $languageID) . ']' : ''), 'rules' => array('trim', 'max_length' => 255));
         $inputData[] = 'name_' . $lang;
         $inputData[] = 'vname_' . $lang;
         $inputData[] = 'sname_' . $lang;
         $inputData[] = 'validate_error_' . $lang;
     }
     // Keyword
     $rules['keyword'] = array('label' => __('keyword', 'system'), 'rules' => array('trim', 'required', 'alpha_dash', 'max_length' => 128, 'callback__is_unique_keyword' => array($plugin, $categoryID, $fieldID), 'callback__is_system_field' => array($fieldID ? $fieldOld['keyword'] : '', $fieldID ? $fieldOld['system'] : '')));
     // Type
     $rules['type'] = array('label' => __('field_type', 'system_fields'), 'rules' => array('required', 'callback__is_system_field' => array($fieldID ? $fieldOld['type'] : '', $fieldID ? $fieldOld['system'] : '')));
     // Style value
     $rules['style'] = array('label' => __('style', 'system_fields'), 'rules' => array('trim'));
     // Class value
     $rules['class'] = array('label' => __('class', 'system_fields'), 'rules' => array('trim'));
     // Required
     $rules['required'] = array('label' => __('required', 'system_fields'), 'rules' => array('intval'));
     // Regular expression
     $rules['validate'] = array('label' => __('validate', 'system_fields'), 'rules' => array('trim'));
     $inputData[] = 'validate';
     // Configuration array
     $inputConfig = array();
     foreach (array('custom', input::post('type')) as $conf) {
         if (isset($configs[$conf])) {
             foreach ($configs[$conf] as $option) {
                 $rules['config_' . $conf . '_' . $option['keyword']] = array('label' => utf8::strtolower($option['label']), 'rules' => isset($option['rules']) ? $option['rules'] : array());
                 $inputConfig[$option['keyword']] = 'config_' . $conf . '_' . $option['keyword'];
             }
         }
     }
     // Add items rules
     $items = array();
     $oldItems = $fieldID ? $fieldOld['items'] : array();
     if ($this->fields_model->isMultiValue(input::post('type'))) {
         $itemsPost = input::post('items');
         $sitemsPost = input::post('sitems');
         foreach (config::item('languages', 'core', 'keywords') as $languageID => $lang) {
             $orderID = 1;
             if (isset($itemsPost[$lang]) && is_array($itemsPost[$lang])) {
                 foreach ($itemsPost[$lang] as $itemID => $itemName) {
                     // Trim name
                     $itemName = utf8::trim($itemName);
                     // Assign item data
                     $items[$itemID]['order_id'] = $orderID;
                     $items[$itemID]['name_' . $lang] = $itemName;
                     $items[$itemID]['sname_' . $lang] = $sitemsPost[$lang][$itemID];
                     $orderID++;
                     // Add rule
                     $rules['items[' . $lang . '][' . $itemID . ']'] = array();
                     if ($itemName == '') {
                         validate::setRule('items', '', '');
                         validate::setFieldError('items', __('empty_item', 'system_fields') . (count(config::item('languages', 'core', 'keywords')) > 1 ? ' [' . config::item('languages', 'core', 'names', $languageID) . ']' : ''));
                     }
                 }
             }
         }
         if (!$items) {
             validate::setRule('items', '', '');
             validate::setFieldError('items', __('no_items', 'system_fields'));
         }
         view::assign(array('field' => array('items' => $items)));
     }
     // Assign rules
     validate::setRules($rules);
     // Validate fields
     if (!validate::run()) {
         return false;
     }
     // Get post data
     $fieldData = input::post($inputData);
     // Default data
     $fieldData['system'] = isset($hidden['system']) ? $hidden['system'] : 0;
     $fieldData['multilang'] = isset($hidden['multilang']) ? $hidden['multilang'] : 0;
     // Get config data
     $fieldData['config'] = array();
     foreach ($inputConfig as $key => $val) {
         $fieldData['config'][$key] = input::post($val);
     }
     // Set additional config data
     $fieldData['config']['html'] = input::post('html') ? 1 : 0;
     $fieldData['config']['in_search'] = input::post('in_search') ? 1 : 0;
     $fieldData['config']['in_search_advanced'] = input::post('in_search_advanced') ? 1 : 0;
     if ($fieldData['config']['in_search'] || $fieldData['config']['in_search_advanced']) {
         $fieldData['config']['search_options'] = input::post('search_options') ? input::post('search_options') : '';
     }
     if (input::post('type') == 'checkbox' || input::post('search_options') == 'multiple') {
         $fieldData['config']['columns_number'] = input::post('columns_number') && input::post('columns_number') >= 1 && input::post('columns_number') <= 4 ? input::post('columns_number') : 1;
     }
     // Save field
     if (!($newFieldID = $this->fieldsdb_model->saveField($plugin, $table, $categoryID, $fieldID, $fieldData, $items))) {
         view::setError(__('db_no_alter', 'system_fields'));
         return false;
     }
     // Check if order of items have changed
     if ($fieldID && $this->fields_model->isMultiValue(input::post('type')) && $this->fields_model->isValueColumn(input::post('type'))) {
         // Get old and new item IDs
         $itemsOldIDs = $itemsNewIDs = array();
         foreach ($oldItems as $itemID => $item) {
             $itemsOldIDs[$itemID] = $item['order_id'];
         }
         foreach ($items as $itemID => $item) {
             $itemsNewIDs[$itemID] = $item['order_id'];
         }
         // Do we have any differences?
         if (array_diff_assoc($itemsOldIDs, $itemsNewIDs)) {
             // Update items IDs
             $this->fieldsdb_model->updateItemsIDs($table, $fieldData['keyword'], $itemsOldIDs, $itemsNewIDs);
         }
     }
     // Adjust table column
     $this->fieldsdb_model->adjustColumn($table, $fieldData['keyword'], $newFieldID, $fieldData);
     // Success
     view::setInfo(__('field_saved', 'system_fields'));
     router::redirect('cp/system/fields/' . $plugin . '/edit/' . $categoryID . '/' . $newFieldID);
 }
Example #7
0
 protected function _saveType($typeID, $type, $fields)
 {
     // Check if demo mode is enabled
     if (input::demo()) {
         return false;
     }
     // Rules array
     $rules = array();
     // Input data array
     $input = array('keyword', 'field_name_1', 'field_name_2');
     // Name field
     foreach (config::item('languages', 'core', 'keywords') as $languageID => $language) {
         $rules['name_' . $language] = array('label' => __('name', 'system') . (count(config::item('languages', 'core', 'keywords')) > 1 ? ' [' . config::item('languages', 'core', 'names', $languageID) . ']' : ''), 'rules' => array('trim', 'required', 'max_length' => 128));
         $input[] = 'name_' . $language;
     }
     // Keyword field
     $rules['keyword'] = array('label' => __('keyword', 'system'), 'rules' => array('required', 'max_length' => 32, 'alpha_dash', 'strtolower', 'callback__is_unique_keyword' => $typeID));
     // Is this an existing type?
     if ($typeID) {
         $rules['field_name_1'] = array('label' => __('type_fields_name', 'users_types'), 'rules' => array('max_length' => 128, 'callback__is_valid_field_name' => array('field_name_1', $fields)));
         $rules['field_name_2'] = array('label' => __('type_fields_name', 'users_types'), 'rules' => array('max_length' => 128, 'callback__is_valid_field_name' => array('field_name_2', $fields)));
     }
     // Assign rules
     validate::setRules($rules);
     // Validate fields
     if (!validate::run()) {
         return false;
     }
     // Get post data
     $data = input::post($input);
     // Save user type
     if (!($newTypeID = $this->users_types_model->saveType($typeID, $data))) {
         if ($typeID) {
             view::setError(__('db_no_rename', 'system_fields'));
         } else {
             view::setError(__('db_no_create', 'system_fields'));
         }
         return false;
     }
     // Is this an existing type?
     if ($typeID) {
         $fields = config::item('usertypes', 'core', 'fields', $typeID);
         if (($data['field_name_1'] || $data['field_name_2']) && ($fields[1] != $data['field_name_1'] || $fields[2] != $data['field_name_2'])) {
             $this->users_types_model->updateNames($typeID, $data['field_name_1'], $data['field_name_2']);
         }
     }
     // Success
     view::setInfo(__('type_saved', 'users_types'));
     router::redirect('cp/users/types/edit/' . $newTypeID);
 }
Example #8
0
 protected function _saveLanguageData($plugin, $language, $default)
 {
     // Check if demo mode is enabled
     if (input::demo()) {
         return false;
     }
     // Create rules
     $rules = array();
     foreach ($default as $section => $groups) {
         foreach ($groups as $group => $types) {
             foreach ($types as $type => $lang) {
                 foreach ($lang as $keyword => $name) {
                     $rules[$group . '_' . $keyword] = array('label' => '', 'rules' => array('trim', 'required'));
                 }
             }
         }
     }
     // Assign rules
     validate::setRules($rules);
     // Validate fields
     if (!validate::run()) {
         return false;
     }
     // Get language data
     $languageData = array();
     foreach ($default as $section => $groups) {
         foreach ($groups as $group => $types) {
             foreach ($types as $type => $lang) {
                 foreach ($lang as $keyword => $name) {
                     $cp = $type == 'cp' ? 1 : 0;
                     // Set language data
                     $data = array('value_' . $language => input::post($group . '_' . $keyword));
                     // Save language string
                     $this->languages_model->saveLanguageData($plugin, $section, $group, $keyword, $data);
                 }
             }
         }
     }
     // Recompile language pack
     $this->languages_model->compile($language);
     // Success
     view::setInfo(__('language_saved', 'system_languages'));
     router::redirect('cp/system/languages/translate/' . $plugin . '/' . $language);
 }
 private function checkRules($modelAction)
 {
     if (method_exists($this, 'rules')) {
         $rules = $this->rules();
         if (!empty($rules)) {
             foreach ($rules as $val) {
                 validate::run($this->data, $val, $this->attributes, $modelAction, $this);
             }
         }
     }
 }
Example #10
0
 protected function _saveNewsletter($newsletterID)
 {
     // Check if demo mode is enabled
     if (input::demo()) {
         return false;
     }
     // Create rules
     $rules = array('category_id' => array('label' => __('gift_category', 'gifts'), 'rules' => array('intval')));
     // Get newsletter data
     $newsletterData = $input = array();
     $rules['subject'] = array('label' => __('newsletter_subject', 'newsletters'), 'rules' => array('trim', 'required', 'max_length' => 255));
     $rules['message_html'] = array('label' => __('newsletter_message_html', 'newsletters'), 'rules' => array('trim', 'required'));
     $rules['message_text'] = array('label' => __('newsletter_message_text', 'newsletters'), 'rules' => array('trim', 'required'));
     $input = array('subject', 'message_html', 'message_text');
     // Assign rules
     validate::setRules($rules);
     // Validate fields
     if (!validate::run()) {
         return false;
     }
     // Get newsletter data
     $newsletter = input::post($input);
     // Save newsletter
     if (!($newsletterID = $this->newsletters_model->saveNewsletter($newsletterID, $newsletter))) {
         view::setError(__('save_error', 'system'));
         return false;
     }
     router::redirect('cp/content/newsletters/' . (uri::segment(6) == 'review' ? 'review' : 'recipients') . '/' . $newsletterID);
 }
Example #11
0
 protected function _saveTemplate($templateID, $keyword)
 {
     // Check if demo mode is enabled
     if (input::demo()) {
         return false;
     }
     // Rules and input arrays
     $rules = $input = array();
     // Build rules
     foreach (config::item('languages', 'core', 'keywords') as $languageID => $language) {
         // Make sure this is not a header/footer template
         if (!in_array($keyword, array('header', 'footer'))) {
             $rules['subject_' . $language] = array('label' => __('template_subject', 'system_email_templates') . (count(config::item('languages', 'core', 'keywords')) > 1 ? ' [' . config::item('languages', 'core', 'names', $languageID) . ']' : ''), 'rules' => array('trim', 'required'));
             $input[] = 'subject_' . $language;
         }
         $rules['message_html_' . $language] = array('label' => __('template_message_html', 'system_email_templates') . (count(config::item('languages', 'core', 'keywords')) > 1 ? ' [' . config::item('languages', 'core', 'names', $languageID) . ']' : ''), 'rules' => array('trim', 'required'));
         $rules['message_text_' . $language] = array('label' => __('template_message_text', 'system_email_templates') . (count(config::item('languages', 'core', 'keywords')) > 1 ? ' [' . config::item('languages', 'core', 'names', $languageID) . ']' : ''), 'rules' => array('trim', 'required'));
         $rules['active'] = array('label' => __('active', 'system'), 'rules' => array('required', 'intval'));
         $input[] = 'message_html_' . $language;
         $input[] = 'message_text_' . $language;
         $input[] = 'active';
     }
     // Assign rules
     validate::setRules($rules);
     // Validate fields
     if (!validate::run()) {
         return false;
     }
     // Get template data
     $template = input::post($input);
     // Save template data
     $this->emailtemplates_model->saveTemplate($templateID, $template);
     // Success
     view::setInfo(__('template_saved', 'system_email_templates'));
     router::redirect('cp/system/emailtemplates/edit/' . $templateID);
 }
Example #12
0
 protected function _saveMetaTags($plugin, $tags)
 {
     // Check if demo mode is enabled
     if (input::demo()) {
         return false;
     }
     $rules = array();
     foreach ($tags as $keyword => $group) {
         foreach (config::item('languages', 'core', 'keywords') as $language) {
             $rules[$keyword . '_title_' . $language] = $rules[$keyword . '_description_' . $language] = $rules[$keyword . '_keywords_' . $language] = array('label' => '', 'rules' => array('is_string', 'trim', 'max_length' => 255));
         }
     }
     validate::setRules($rules);
     if (!validate::run()) {
         return false;
     }
     foreach ($tags as $keyword => $group) {
         $data = array();
         foreach (config::item('languages', 'core', 'keywords') as $language) {
             $data['meta_title_' . $language] = input::post($keyword . '_title_' . $language);
             $data['meta_description_' . $language] = input::post($keyword . '_description_' . $language);
             $data['meta_keywords_' . $language] = input::post($keyword . '_keywords_' . $language);
         }
         $this->metatags_model->saveMetaTags($plugin, $keyword, $data);
     }
     view::setInfo(__('meta_tags_saved', 'system_metatags'));
     router::redirect('cp/system/metatags/edit/' . $plugin);
 }
Example #13
0
 protected function _savePlan($planID)
 {
     // Check if demo mode is enabled
     if (input::demo()) {
         return false;
     }
     // Rules array
     $rules = array();
     // Data array
     $input = array('duration', 'cycle', 'price', 'group_id', 'signup', 'active');
     // Name
     foreach (config::item('languages', 'core', 'keywords') as $languageID => $languageKey) {
         $rules['name_' . $languageKey] = array('label' => __('name', 'system') . (count(config::item('languages', 'core', 'keywords')) > 1 ? ' [' . config::item('languages', 'core', 'names', $languageID) . ']' : ''), 'rules' => array('trim', 'required', 'max_length' => 255));
         $input[] = 'name_' . $languageKey;
         $rules['description_' . $languageKey] = array('label' => __('description', 'system') . (count(config::item('languages', 'core', 'keywords')) > 1 ? ' [' . config::item('languages', 'core', 'names', $languageID) . ']' : ''), 'rules' => array('trim', 'required'));
         $input[] = 'description_' . $languageKey;
     }
     // Additional rules
     $rules['duration'] = array('label' => __('plan_cycle', 'billing_plans'), 'rules' => array('trim', 'required', 'is_natural_no_zero'));
     $rules['cycle'] = array('label' => __('plan_cycle', 'billing_plans'), 'rules' => array('trim', 'required', 'intval'));
     $rules['price'] = array('label' => __('price', 'billing'), 'rules' => array('trim', 'required', 'numeric'));
     $rules['group_id'] = array('label' => __('user_group', 'users'), 'rules' => array('trim', 'required', 'intval'));
     $rules['signup'] = array('label' => __('plan_show_signup', 'billing_plans'), 'rules' => array('trim', 'required', 'intval'));
     $rules['active'] = array('label' => __('active', 'system'), 'rules' => array('trim', 'required', 'intval'));
     // Assign rules
     validate::setRules($rules);
     // Validate fields
     if (!validate::run()) {
         return false;
     }
     // Get post data
     $plan = input::post($input);
     // Save banner group
     if (!($planID = $this->plans_model->savePlan($planID, $plan))) {
         view::setError(__('save_error', 'system'));
         return false;
     }
     // Success
     view::setInfo(__('plan_saved', 'billing_plans'));
     router::redirect('cp/billing/plans/edit/' . $planID);
 }
Example #14
0
 protected function _saveMessage($conversationID, $conversation)
 {
     // Are we allowed to reply?
     if ($conversation['user_id'] == session::item('user_id') && !session::permission('messages_reply', 'messages') || !in_array($conversation['users'][$conversation['user_id']]['group_id'], session::permission('messages_reply', 'messages'))) {
         view::setError(__('no_action', 'system'));
         return false;
     } elseif (config::item('credits_active', 'billing') && session::permission('messages_credits', 'messages') && session::permission('messages_credits', 'messages') > session::item('total_credits')) {
         view::setError(__('no_credits', 'system', array(), array('%' => html_helper::anchor('billing/credits', '\\1'))));
         return false;
     }
     // Create rules
     $rules = array('message' => array('label' => __('message', 'messages'), 'rules' => array('trim', 'required', 'callback__is_messages_delay')));
     // Do we have character limit?
     if (session::permission('messages_characters_limit', 'messages')) {
         $rules['message']['rules']['max_length'] = session::permission('messages_characters_limit', 'messages');
     }
     // Assign rules
     validate::setRules($rules);
     // Validate fields
     if (!validate::run()) {
         return false;
     }
     // Get input data
     $message = input::post('message');
     // Save message
     if (!($messageID = $this->messages_model->saveMessage(0, $conversationID, $message, $conversation['recipients']))) {
         if (!validate::getTotalErrors()) {
             view::setError(__('save_error', 'system'));
         }
         return false;
     }
     // Create email replacement tags
     $tags = array();
     foreach (session::section('session') as $key => $value) {
         $tags['from.' . $key] = $value;
     }
     $tags['conversation_link'] = config::siteURL('messages/view/' . $conversationID);
     // Send new private message email
     loader::library('email');
     foreach ($conversation['users'] as $user) {
         if ($user['user_id'] != session::item('user_id') && (!isset($user['config']['notify_messages']) || $user['config']['notify_messages'])) {
             $this->email->sendTemplate('messages_new', $user['email'], array_merge($tags, $user), $user['language_id']);
         }
     }
     // Success
     view::setInfo(__('message_sent', 'messages'));
     router::redirect('messages/view/' . $conversationID);
 }
Example #15
0
 public function validateValues($fields, $rules = array())
 {
     // Loop through fields
     foreach ($fields as $field) {
         // Is this a data field?
         if (isset($field['system'])) {
             // Is this a multi language field?
             if ($field['multilang']) {
                 $languages = array();
                 foreach (config::item('languages', 'core', 'keywords') as $languageID => $languageKey) {
                     $languages[] = array('keyword' => '_' . $languageKey, 'language' => config::item('languages', 'core', 'names', $languageID));
                 }
             } else {
                 $languages = array(array('keyword' => '', 'language' => ''));
             }
             // Loop through fields
             foreach ($languages as $param) {
                 // Is this a section divider?
                 if ($field['type'] != 'section') {
                     $keyword = 'data_' . $field['keyword'] . $param['keyword'];
                     // Create basic rule
                     $rules[$keyword] = array('label' => text_helper::entities($field['name']) . ($param['language'] ? count($languages) > 1 ? ' [' . $param['language'] . ']' : '' : ''), 'rules' => array());
                     // Required
                     if ($field['required']) {
                         if ($field['type'] == 'birthday') {
                             foreach (array('day', 'month', 'year') as $index) {
                                 $rules['data_' . $field['keyword'] . $param['keyword'] . '[' . $index . ']']['label'] = $field['name'];
                                 $rules['data_' . $field['keyword'] . $param['keyword'] . '[' . $index . ']']['rules'][] = 'required';
                             }
                             $value = input::post($keyword);
                         } elseif ($field['type'] == 'location') {
                             foreach (array('country', 'state', 'city') as $index) {
                                 $rules['data_' . $field['keyword'] . $param['keyword'] . '[' . $index . ']']['label'] = $field['name'];
                                 $rules['data_' . $field['keyword'] . $param['keyword'] . '[' . $index . ']']['rules'][] = 'required';
                             }
                             $value = input::post($keyword);
                         } else {
                             $rules[$keyword]['rules'][] = 'required';
                         }
                     }
                     // Field types
                     if ($this->getValueFormat($field['type']) == 'text') {
                         $rules[$keyword]['rules'][] = 'is_string';
                     } elseif ($this->getValueFormat($field['type']) == 'number') {
                         $rules[$keyword]['rules'][] = 'intval';
                         $rules[$keyword]['rules'][] = 'is_numeric';
                     } elseif ($this->getValueFormat($field['type']) == 'double') {
                         $rules[$keyword]['rules'][] = 'is_numeric';
                     }
                     if ($field['type'] == 'website') {
                         $rules[$keyword]['rules']['valid_url'] = array(array('http://', 'https://'));
                     }
                     // Min/max rules
                     foreach (array('min_length', 'max_length', 'min_value', 'max_value') as $rule) {
                         if (isset($field['config'][$rule]) && $field['config'][$rule]) {
                             $rules[$keyword]['rules'][$rule] = array($field['config'][$rule]);
                         }
                     }
                     // Validation
                     if (isset($field['validate']) && $field['validate']) {
                         $rules[$keyword]['rules']['regex'] = array($field['validate']);
                         validate::setError('data_' . $field['keyword'] . '_regex', $field['validate_error'], $field['keyword'] . $param['keyword']);
                     }
                 }
             }
         }
     }
     // Set rules
     validate::setRules($rules);
     // Validate fields
     if (!validate::run()) {
         return false;
     }
     return true;
 }
Example #16
0
 protected function _saveMessage($userID)
 {
     // Is user logged in?
     if (!users_helper::isLoggedin()) {
         return false;
     }
     if ($userID) {
         // Get user
         if (!($user = $this->users_model->getUser($userID)) || !$user['active'] || !$user['verified']) {
             return false;
         }
         // Does user have permission to view this user group/type?
         if (!in_array($user['group_id'], session::permission('users_groups_browse', 'users')) || !in_array($user['type_id'], session::permission('users_types_browse', 'users'))) {
             return false;
         } elseif (!$this->users_model->getPrivacyAccess($user['user_id'], isset($user['config']['privacy_profile']) ? $user['config']['privacy_profile'] : 1)) {
             return false;
         } elseif (!session::permission('messages_post', 'timeline') || !$this->users_model->getPrivacyAccess($user['user_id'], isset($user['config']['privacy_timeline_messages']) ? $user['config']['privacy_timeline_messages'] : 1, false)) {
             return false;
         }
     } else {
         $userID = session::item('user_id');
     }
     // Load messages model
     loader::model('timeline/messages', array(), 'timeline_messages_model');
     // Create rules
     $rules = array('message' => array('label' => __('message', 'timeline'), 'rules' => array('trim', 'required', 'min_length' => config::item('message_min_length', 'timeline'), 'max_length' => config::item('message_max_length', 'timeline'), 'callback__is_messages_delay')));
     // Assign rules
     validate::setRules($rules);
     // Validate fields
     if (!validate::run()) {
         $output = view::load('timeline/post', array('user' => $user), true);
         view::ajaxError($output);
     }
     // Get message
     $message = input::post('message');
     // Save message
     if (!($messageID = $this->timeline_messages_model->saveMessage(0, $message, $userID))) {
         if (!validate::getTotalErrors()) {
             view::setError(__('save_error', 'system'));
         }
         return false;
     }
     $actions = $this->timeline_model->getActions($userID, 0, 0, 1);
     $output = view::load('timeline/actions', array('actions' => $actions), true);
     view::ajaxResponse($output);
 }
Example #17
0
 protected function _saveSettings($plugin, $settings, $param)
 {
     // Check if demo mode is enabled
     if (input::demo()) {
         return false;
     }
     $rules = array();
     foreach ($settings as $group => $configs) {
         foreach ($configs as $setting) {
             $options = array();
             if ($setting['required']) {
                 $options[] = 'required';
             }
             if ($setting['type'] == 'email') {
                 $options[] = 'valid_email';
             } elseif ($setting['type'] == 'number') {
                 if ($setting['required']) {
                     $options[] = 'is_numeric_no_zero';
                     $options['min_value'] = '1';
                 } else {
                     $options[] = 'is_numeric';
                 }
             }
             $rules[$setting['keyword']] = array('label' => $setting['name'], 'rules' => $options);
         }
     }
     validate::setRules($rules);
     if (!validate::run()) {
         return false;
     }
     foreach ($settings as $group => $configs) {
         foreach ($configs as $setting) {
             if ($setting['type'] != 'static') {
                 $value = input::post($setting['keyword']);
                 if (method_exists($this, '_savePluginSettings')) {
                     $this->_savePluginSettings($setting['keyword'], $value);
                 }
                 if ($setting['type'] == 'checkbox') {
                     if (!is_array($value)) {
                         $value = array();
                     }
                     $value = json_encode(array_flip($value));
                 } elseif ($setting['type'] == 'number') {
                     $value = $value == '' ? 0 : $value;
                 }
                 $orderID = false;
                 if (config::item('devmode', 'system') == 2) {
                     $orderID = (int) input::post($setting['keyword'] . '___order');
                 }
                 $this->config_model->saveSetting($plugin, $setting['keyword'], $value, $orderID);
             }
         }
     }
     view::setInfo(__('config_saved', 'system_config'));
     router::redirect(($param ? 'cp/system/plugins/settings/' : 'cp/system/config/') . $plugin);
 }
Example #18
0
 public function _saveSettings($keyword, $manifest, $service)
 {
     // Check if demo mode is enabled
     if (input::demo()) {
         return false;
     }
     // Create rules
     $rules = array();
     // Loop through available settings
     foreach ($manifest['settings'] as $setting) {
         // Rule options
         $options = array();
         if (isset($setting['required']) && $setting['required']) {
             $options[] = 'required';
         }
         $rules[$setting['keyword']] = array('label' => $setting['name'], 'rules' => $options);
     }
     // Assign rules
     validate::setRules($rules);
     // Run rules
     if (!validate::run()) {
         return false;
     }
     $settings = array();
     foreach ($manifest['settings'] as $setting) {
         $value = input::post($setting['keyword']);
         if ($setting['type'] == 'checkbox') {
             $value = array_flip($value);
         }
         $settings[$setting['keyword']] = $value;
     }
     // Load storage service library
     $class = loader::library('storages/' . $keyword, array(), null);
     // Does custom validation method exist?
     if (method_exists($class, 'validateSettings')) {
         // Run custom validation method
         if (($settings = $class->validateSettings($settings)) === false) {
             return false;
         }
     }
     $this->storage_model->saveSettings($service['service_id'], $settings, $service);
     view::setInfo(__('settings_saved', 'system'));
     router::redirect('cp/system/storage/settings/' . $keyword);
 }
Example #19
0
 protected function _saveTemplate($templateID)
 {
     // Check if demo mode is enabled
     if (input::demo()) {
         return false;
     }
     // Create rules
     $rules = array('category_id' => array('label' => __('gift_category', 'gifts'), 'rules' => array('intval')));
     // Get template data
     $rules['name'] = array('label' => __('name', 'system'), 'rules' => array('trim', 'required', 'max_length' => 255));
     $rules['subject'] = array('label' => __('newsletter_subject', 'newsletters'), 'rules' => array('trim', 'required', 'max_length' => 255));
     $rules['message_html'] = array('label' => __('newsletter_message_html', 'newsletters'), 'rules' => array('trim', 'required'));
     $rules['message_text'] = array('label' => __('newsletter_message_text', 'newsletters'), 'rules' => array('trim', 'required'));
     $input = array('name', 'subject', 'message_html', 'message_text');
     // Assign rules
     validate::setRules($rules);
     // Validate fields
     if (!validate::run()) {
         return false;
     }
     // Get template data
     $template = input::post($input);
     // Save template
     if (!($templateID = $this->newsletters_templates_model->saveTemplate($templateID, $template))) {
         view::setError(__('save_error', 'system'));
         return false;
     }
     // Success
     view::setInfo(__('template_saved', 'newsletters_templates'));
     router::redirect('cp/content/newsletters/templates/edit/' . $templateID);
 }
Example #20
0
 protected function _savePermissions($ids, $plugin, $permissions)
 {
     // Check if demo mode is enabled
     if (input::demo()) {
         return false;
     }
     // Create rules
     $rules = array();
     foreach ($permissions as $groupID => $group) {
         foreach (array('cp', 'ca') as $section) {
             if (isset($permissions[$groupID][$section])) {
                 foreach ($permissions[$groupID][$section] as $permission) {
                     $rules[$permission['keyword'] . '_' . $groupID] = array('label' => $permission['name'], 'rules' => '');
                 }
             }
         }
     }
     // Assign rules
     validate::setRules($rules);
     // Validate fields
     if (!validate::run()) {
         return false;
     }
     // Create permissions array
     $data = $orderID = array();
     foreach ($permissions as $groupID => $group) {
         foreach (array('cp', 'ca') as $section) {
             if (isset($permissions[$groupID][$section])) {
                 foreach ($permissions[$groupID][$section] as $permission) {
                     $value = input::post($permission['keyword'] . '_' . $groupID);
                     if ($permission['type'] == 'checkbox') {
                         $value = $value ? implode(',', $value) : '';
                     } elseif ($permission['type'] == 'boolean' || $permission['type'] == 'number') {
                         $value = $value ? (int) $value : 0;
                     }
                     $data[$permission['keyword']] = $value;
                     if (config::item('devmode', 'system') == 2) {
                         $orderID[$permission['keyword']] = (int) input::post($permission['keyword'] . '___order');
                     }
                 }
             }
         }
         // Save user group permissions
         if (!$this->users_groups_model->savePermissions($groupID, $plugin, $data, $orderID)) {
             view::setError(__('save_error', 'system'));
             return false;
         }
     }
     // Successs
     view::setInfo(__('permissions_saved', 'users_permissions'));
     router::redirect('cp/users/groups/permissions/' . $plugin . '/' . $ids);
 }
Example #21
0
 protected function _saveMessage($messageID, $message)
 {
     // Check if demo mode is enabled
     if (input::demo()) {
         return false;
     }
     // Create rules
     $rules = array('message' => array('label' => __('message', 'messages'), 'rules' => array('trim', 'required')));
     // Assign rules
     validate::setRules($rules);
     // Validate fields
     if (!validate::run()) {
         return false;
     }
     // Get input data
     $body = input::post('message');
     // Save message
     if (!($messageID = $this->messages_model->saveMessage($messageID, $message['conversation_id'], $body))) {
         if (!validate::getTotalErrors()) {
             view::setError(__('save_error', 'system'));
         }
         return false;
     }
     // Success
     view::setInfo(__('message_saved', 'messages'));
     router::redirect('cp/plugins/messages/edit/' . $messageID);
 }
Example #22
0
 protected function _saveBanner($groupID, $bannerID, $bannerOld)
 {
     // Check if demo mode is enabled
     if (input::demo()) {
         return false;
     }
     // Create rules
     $rules = array('name' => array('label' => __('name', 'system'), 'rules' => array('trim', 'required', 'max_length' => 255)), 'keyword' => array('label' => __('keyword', 'system'), 'rules' => array('trim', 'required', 'max_length' => 128, 'alpha_dash', 'strtolower', 'callback__is_unique_keyword' => array($groupID, $bannerID))), 'code' => array('label' => __('banner_code', 'banners'), 'rules' => array('trim', 'required')), 'count_views' => array('label' => __('banner_count_views', 'banners'), 'rules' => array('trim', 'intval')), 'total_views' => array('label' => __('banner_views', 'banners'), 'rules' => array('trim', 'intval')), 'count_clicks' => array('label' => __('banner_count_clicks', 'banners'), 'rules' => array('trim', 'intval')), 'total_clicks' => array('label' => __('banner_clicks', 'banners'), 'rules' => array('trim', 'intval')), 'secure_mode' => array('label' => __('banner_secure_mode', 'banners'), 'rules' => array('trim', 'intval')), 'active' => array('label' => __('active', 'system'), 'rules' => array('trim', 'intval')));
     // Assign rules
     validate::setRules($rules);
     // Validate fields
     if (!validate::run()) {
         return false;
     }
     // Banner data
     $bannerData = input::post(array('name', 'keyword', 'code', 'count_views', 'total_views', 'count_clicks', 'total_clicks', 'secure_mode', 'active'));
     $bannerData['group_id'] = $groupID;
     // Save banner
     if (!($bannerID = $this->banners_model->saveBanner($groupID, $bannerID, $bannerData))) {
         if (!validate::getTotalErrors()) {
             view::setError(__('save_error', 'system'));
         }
         return false;
     }
     // Success
     view::setInfo(__('banner_saved', 'banners'));
     router::redirect('cp/content/banners/edit/' . $groupID . '/' . $bannerID);
 }
Example #23
0
 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');
 }
Example #24
0
 protected function _saveGeoData($countryID, $stateID, $cityID, $new = false)
 {
     // Check if demo mode is enabled
     if (input::demo()) {
         return false;
     }
     // Is this a new value?
     if ($new) {
         // Create rules
         $rules = array('name_' . config::item('languages', 'core', 'keywords', config::item('language_id', 'system')) => array('label' => __('name', 'system') . (count(config::item('languages', 'core', 'keywords')) > 1 ? ' [' . config::item('languages', 'core', 'names', config::item('language_id', 'system')) . ']' : ''), 'rules' => array('trim', 'required', 'max_length' => 255)));
         // Assign rules
         validate::setRules($rules);
         // Validate fields
         if (!validate::run()) {
             return false;
         }
     }
     $data = array();
     foreach (config::item('languages', 'core', 'keywords') as $language) {
         $data['name_' . $language] = input::post('name_' . $language);
     }
     if ($cityID || $new && $stateID) {
         $this->geo_model->saveCity($countryID, $stateID, $cityID, $data);
         view::setInfo(__('city_saved', 'system_geo'));
     } elseif ($stateID || $new && $countryID) {
         $this->geo_model->saveState($countryID, $stateID, $data);
         view::setInfo(__('state_saved', 'system_geo'));
     } else {
         $this->geo_model->saveCountry($countryID, $data);
         view::setInfo(__('country_saved', 'system_geo'));
     }
     if ($new) {
         router::redirect('cp/system/geo/browse/' . $countryID . ($stateID ? '/' . $stateID : ''));
     } else {
         router::redirect('cp/system/geo/edit/' . $countryID . ($stateID ? '/' . $stateID : '') . ($cityID ? '/' . $cityID : ''));
     }
 }
Example #25
0
<?php

require 'validate.php';
$source = ['username' => 'a1a23567', 'password' => '521""" ', 'email' => '*****@*****.**', 'number' => '11111111111'];
$validae = new validate($source);
$rules = ['username' => ['label' => '用户名', 'type' => 'username', 'required' => true, 'min' => 6, 'max' => 20, 'trim' => true, 'addslash' => false], 'password' => ['label' => '密码', 'type' => 'password', 'required' => true, 'min' => 6, 'max' => 20, 'trim' => true, 'addslash' => false], 'email' => ['label' => '邮箱', 'type' => 'email', 'required' => true, 'min' => 6, 'max' => 20, 'trim' => true, 'addslash' => false], 'number' => ['label' => '电话', 'type' => 'string', 'required' => true, 'min' => 11, 'max' => 11, 'trim' => true, 'addslash' => false]];
$validae->addRules($rules);
$validae->run();
var_dump($validae);
Example #26
0
 protected function _uploadPicture($adID, $ad)
 {
     // Create rules
     $rules = array('file' => array('label' => __('file_select', 'system_files'), 'rules' => array('required_file' => 'file')));
     // Assign rules
     validate::setRules($rules);
     // Validate form values
     if (!validate::run()) {
         return false;
     }
     // Thumbnails config
     $thumbs = array(array('suffix' => 'x'), array('dimensions' => config::item('picture_dimensions', 'classifieds'), 'method' => 'preserve', 'suffix' => ''), array('dimensions' => config::item('picture_dimensions_t', 'classifieds'), 'method' => 'crop', 'suffix' => 't'));
     // Upload picture
     if (!($fileID = $this->storage_model->upload('classified_picture', session::item('user_id'), 'file', 'jpg|jpeg|gif|png', config::item('picture_max_size', 'classifieds'), config::item('picture_dimensions_max', 'classifieds'), $thumbs))) {
         if (input::isAjaxRequest()) {
             view::ajaxError(config::item('devmode', 'system') ? $this->storage_model->getError() : __('file_upload_error', 'system_files'));
         } else {
             validate::setFieldError('file', config::item('devmode', 'system') ? $this->storage_model->getError() : __('file_upload_error', 'system_files'));
             return false;
         }
     }
     // Extras
     $extra = array();
     // Save picture file
     if (!($pictureID = $this->classifieds_pictures_model->savePictureFile($fileID, $adID, $ad, $extra))) {
         if (input::isAjaxRequest()) {
             view::ajaxError(__('save_error', 'system'));
         } else {
             validate::setFieldError('file', __('save_error', 'system'));
             return false;
         }
     }
     // Update current album counters
     $ad[session::permission('pictures_approve', 'classifieds') ? 'total_pictures' : 'total_pictures_i']++;
     // Update album's modification date
     $this->classifieds_model->updateModifyDate($adID);
     // Was this an ajax request?
     if (input::isAjaxRequest()) {
         //view::ajaxResponse(__('picture_uploaded', 'pictures'));
         view::ajaxResponse(array('redirect' => html_helper::siteURL('classifieds/pictures/index/' . $adID)));
     }
     // Success
     view::setInfo(__('picture_uploaded', 'classifieds'));
     router::redirect('classifieds/pictures/index/' . $adID);
 }
Example #27
0
 protected function _saveTemplate($templateID)
 {
     // Check if demo mode is enabled
     if (input::demo()) {
         return false;
     }
     // Create rules
     $rules = array('category_id' => array('label' => __('gift_category', 'gifts'), 'rules' => array('intval')), 'active' => array('label' => __('active', 'system'), 'rules' => array('intval')));
     // Get template data
     $templateData = $input = array();
     foreach (config::item('languages', 'core', 'keywords') as $languageID => $language) {
         $rules['name_' . $language] = array('label' => __('name', 'system') . (count(config::item('languages', 'core', 'keywords')) > 1 ? ' [' . config::item('languages', 'core', 'names', $languageID) . ']' : ''), 'rules' => array('trim', 'required', 'max_length' => 255));
         $rules['subject_' . $language] = array('label' => __('template_subject', 'messages_templates') . (count(config::item('languages', 'core', 'keywords')) > 1 ? ' [' . config::item('languages', 'core', 'names', $languageID) . ']' : ''), 'rules' => array('trim', 'required', 'max_length' => 255));
         $rules['message_' . $language] = array('label' => __('template_message', 'messages_templates') . (count(config::item('languages', 'core', 'keywords')) > 1 ? ' [' . config::item('languages', 'core', 'names', $languageID) . ']' : ''), 'rules' => array('trim', 'required'));
         $input[] = 'name_' . $language;
         $input[] = 'subject_' . $language;
         $input[] = 'message_' . $language;
     }
     // Assign rules
     validate::setRules($rules);
     // Validate fields
     if (!validate::run()) {
         return false;
     }
     // Get template data
     $template = input::post($input);
     $template['active'] = input::post('active') ? 1 : 0;
     // Save template
     if (!($templateID = $this->messages_templates_model->saveTemplate($templateID, $template))) {
         view::setError(__('save_error', 'system'));
         return false;
     }
     // Success
     view::setInfo(__('template_saved', 'messages_templates'));
     router::redirect('cp/plugins/messages/templates/edit/' . $templateID);
 }
Example #28
0
 protected function _saveSubject($subjectID)
 {
     // Check if demo mode is enabled
     if (input::demo()) {
         return false;
     }
     // Create rules
     $rules = $input = array();
     // Get subject data
     $subjectData = array();
     foreach (config::item('languages', 'core', 'keywords') as $languageID => $language) {
         $rules['name_' . $language] = array('label' => __('name', 'system') . (count(config::item('languages', 'core', 'keywords')) > 1 ? ' [' . config::item('languages', 'core', 'names', $languageID) . ']' : ''), 'rules' => array('trim', 'required', 'max_length' => 255));
         $input[] = 'name_' . $language;
     }
     // Assign rules
     validate::setRules($rules);
     // Validate fields
     if (!validate::run()) {
         return false;
     }
     // Get subject data
     $subject = input::post($input);
     $subject['active'] = input::post('active') ? 1 : 0;
     // Save subject
     if (!($subjectID = $this->reports_subjects_model->saveSubject($subjectID, $subject))) {
         view::setError(__('save_error', 'system'));
         return false;
     }
     // Success
     view::setInfo(__('subject_saved', 'reports_subjects'));
     router::redirect('cp/content/reports/subjects/edit/' . $subjectID);
 }
Example #29
0
 protected function _saveNotifications($userID, $settings)
 {
     // Check if demo mode is enabled
     if (input::demo()) {
         return false;
     }
     // Validate form fields
     foreach ($settings as $keyword => $setting) {
         if (isset($setting['rules'])) {
             validate::setRule($keyword, $setting['name'], $setting['rules']);
         }
     }
     // Validate fields
     if (!validate::run()) {
         return false;
     }
     // Set notifications settings
     $insert = $delete = array();
     foreach ($settings as $keyword => $setting) {
         $data = input::post($keyword);
         if (isset($data['insert']) && isset($data['delete'])) {
             $insert = array_merge($insert, $data['insert']);
             $delete = array_merge($delete, $data['delete']);
         }
     }
     // Save notifications
     if ($insert && !$this->users_model->saveConfig($userID, $insert) || $delete && !$this->users_model->deleteConfig($userID, $delete)) {
         view::setError(__('save_error', 'system'));
         return false;
     }
     // Success
     view::setInfo(__('notifications_saved', 'users_notifications'));
     router::redirect('cp/users/notifications/' . $userID);
 }
Example #30
0
 protected function _uploadPicture()
 {
     // Create rules
     $rules = array('file' => array('label' => __('file_select', 'system_files'), 'rules' => array('required_file' => 'file')));
     // Assign rules
     validate::setRules($rules);
     // Validate form values
     if (!validate::run()) {
         return false;
     }
     // Thumbnails config
     $thumbs = array(array('suffix' => 'x'), array('dimensions' => config::item('picture_dimensions', 'users'), 'method' => 'preserve', 'suffix' => ''), array('dimensions' => config::item('picture_dimensions_p', 'users'), 'method' => 'crop', 'suffix' => 'p'), array('dimensions' => config::item('picture_dimensions_l', 'users'), 'method' => 'crop', 'suffix' => 'l'), array('dimensions' => config::item('picture_dimensions_t', 'users'), 'method' => 'crop', 'suffix' => 't'));
     // Upload picture
     if (!($fileID = $this->storage_model->upload('user', session::item('user_id'), 'file', 'jpg|jpeg|gif|png', config::item('picture_max_size', 'users'), config::item('picture_dimensions_max', 'users'), $thumbs))) {
         if (input::isAjaxRequest()) {
             view::ajaxError(config::item('devmode', 'system') ? $this->storage_model->getError() : __('file_upload_error', 'system_files'));
         } else {
             validate::setFieldError('file', config::item('devmode', 'system') ? $this->storage_model->getError() : __('file_upload_error', 'system_files'));
         }
         return false;
     }
     // Delete old picture if it exists
     if (session::item('picture_id')) {
         // Delete picture
         $this->users_model->deletePicture(session::item('user_id'), session::item('picture_id'), false);
     }
     // Save new picture ID
     if (!$this->users_model->savePicture(session::item('user_id'), $fileID)) {
         if (input::isAjaxRequest()) {
             view::ajaxError(__('save_error', 'system'));
         } else {
             validate::setFieldError('file', __('save_error', 'system'));
             return false;
         }
     }
     // Was this an ajax request?
     if (input::isAjaxRequest()) {
         view::ajaxResponse(array('redirect' => html_helper::siteURL(session::item('slug'))));
     }
     // Success
     view::setInfo(__('picture_uploaded', 'users_picture'));
     router::redirect(session::item('slug'));
 }