public function index() { $this->form_validation->set_rules('first_name', 'First Name', 'required|xss_clean'); $this->form_validation->set_rules('last_name', 'Last Name', 'required|xss_clean'); if ($this->input->post()) { $config = $this->config->config; if (!$config['change_settings']) { $this->addFlash(lang('demo_error')); } else { $data = array('first_name' => $this->input->post('first_name'), 'last_name' => $this->input->post('last_name')); if ($this->input->post('old_password') || $this->c_user->password == 0) { $old_password = $this->input->post('old_password'); $ion_model = new Ion_auth_model(); if ($this->c_user->password == 0) { $valid_old = true; } else { $valid_old = $ion_model->hash_password_db($this->c_user->id, $old_password); } $password_min = $this->config->item('min_password_length', 'ion_auth'); $password_max = $this->config->item('max_password_length', 'ion_auth'); $this->form_validation->set_rules('new_password', lang('new_password'), 'required|min_length[' . $password_min . ']|max_length[' . $password_max . ']|matches[confirm_password]'); $this->form_validation->set_rules('confirm_password', lang('confirm_new_password'), 'required'); if ($valid_old) { $data['password'] = $this->input->post('new_password'); } else { $this->form_validation->create_error(lang('invalid_old_password_error')); } } if ($this->form_validation->run() === true) { $update = $this->ion_auth->update($this->c_user->id, $data); if ($update) { $this->addFlash(lang('personal_settings_updated'), 'success'); redirect('settings/personal'); } else { $this->addFlash($this->ion_auth->errors()); } } else { if (validation_errors()) { $this->addFlash(validation_errors()); } } } } $this->load->config('timezones'); $timezones = $this->config->item('timezones'); $this->template->set('timezones', $timezones); $current_timezone = User_timezone::get_user_timezone($this->c_user->id, true); $this->template->set('current_timezone', $current_timezone); $this->template->set('email', $this->c_user->email); $this->template->set('first_name', $this->form_validation->set_value('first_name', $this->c_user->first_name)); $this->template->set('last_name', $this->form_validation->set_value('last_name', $this->c_user->last_name)); CssJs::getInst()->add_js(array('controller/settings/index.js', 'controller/settings/personal/index.js')); $this->template->render(); }
public function index() { $this->form_validation->set_rules('first_name', 'First Name', 'required|xss_clean'); $this->form_validation->set_rules('last_name', 'Last Name', 'required|xss_clean'); if (isset($_POST) && !empty($_POST)) { $config = $this->config->config; if (!$config['change_settings']) { $this->addFlash('<span class="err_icon"></span>Demo version settings can\'t be changed'); } else { $data = array('first_name' => $this->input->post('first_name'), 'last_name' => $this->input->post('last_name')); if ($this->input->post('old_password')) { $old_password = $this->input->post('old_password'); $ion_model = new Ion_auth_model(); $valid_old = $ion_model->hash_password_db($this->c_user->id, $old_password); $password_min = $this->config->item('min_password_length', 'ion_auth'); $password_max = $this->config->item('max_password_length', 'ion_auth'); $this->form_validation->set_rules('new_password', 'New Password', 'required|min_length[' . $password_min . ']|max_length[' . $password_max . ']|matches[confirm_password]'); $this->form_validation->set_rules('confirm_password', 'Confirm New Password', 'required'); if ($valid_old) { $data['password'] = $this->input->post('new_password'); } else { $this->form_validation->create_error('Invalid Old Password'); } } if ($this->form_validation->run() === TRUE) { $update = $this->ion_auth->update($this->c_user->id, $data); if ($update) { $this->addFlash('Personal Settings Updated', 'success'); redirect('settings/personal'); } else { $this->addFlash($this->ion_auth->errors()); } } else { if (validation_errors()) { $this->addFlash(validation_errors()); } } } } $this->template->set('email', $this->c_user->email); $this->template->set('first_name', $this->form_validation->set_value('first_name', $this->c_user->first_name)); $this->template->set('last_name', $this->form_validation->set_value('last_name', $this->c_user->last_name)); /*directories*/ $directories = DM_Directory::get_all_sorted(); $raw_dir_user = Directory_User::get_by_user($this->c_user->id); $user_directories = $raw_dir_user->to_dir_array(); $is_notified = $raw_dir_user->isNotified(); CssJs::getInst()->c_js(); JsSettings::instance()->add(array('autocomplete_directories_url' => site_url('settings/directories/google_autocomplete'))); $parsers = array(); foreach ($directories as $_dir) { try { $parsers[$_dir->id] = Directory_Parser::factory($_dir->type); } catch (Exception $e) { $parsers[$_dir->id] = new stdClass(); } } $receive_emails = $this->getAAC()->isGrantedPlan('email_notifications'); $this->template->set('is_notified', $is_notified); $this->template->set('parsers', $parsers); $this->template->set('directories', $directories); $this->template->set('user_directories', $user_directories); $this->template->set('receive_emails', $receive_emails); /*end directories*/ /*google keywords*/ $this->load->config('site_config', TRUE); $keywords_config = $this->config->item('keywords', 'site_config'); $keywords_count = isset($keywords_config['count']) && $keywords_config['count'] ? $keywords_config['count'] : 10; // get user additional info (address) $user_additional = User_additional::inst()->get_by_user_id($this->c_user->id); // get available keywords $keywords = Keyword::inst()->get_user_keywords($this->c_user->id); // escape keywords names and website name $address_name = isset($address_name) ? HTML::chars($address_name) : HTML::chars($user_additional->address); $keywords_names = isset($keywords_names) ? HTML::chars_arr($keywords_names) : HTML::chars_arr(array_values($keywords->all_to_single_array('keyword'))); JsSettings::instance()->add(array('autocomplete_keywords_url' => site_url('settings/keywords/google_autocomplete'))); CssJs::getInst()->c_js(); $this->template->set('address_id', $user_additional->address_id); $this->template->set('address_name', $address_name); $this->template->set('keywords_names', $keywords_names); $this->template->set('keywords_count', $keywords_count); /*end google keywords*/ /*socialmedia settings*/ $this->load->library('Socializer/socializer'); $this->load->config('timezones'); CssJs::getInst()->c_js('settings/socialmedia', 'index')->c_js('settings/socialmedia', 'twitter'); $tokens = new Access_token(); $linkedin_data = $tokens->get_linkedin_token($this->c_user->id); $this->template->set('linkedin_token', $linkedin_data->id); $facebook_data = $tokens->get_facebook_token($this->c_user->id); if ($facebook_data->id) { try { $facebook = Socializer::factory('Facebook', $this->c_user->id); $user_facebook_pages = $facebook->get_user_pages(); $this->template->set('fb_pages', $user_facebook_pages); $selected_fanpage = Facebook_Fanpage::inst()->get_selected_page($this->c_user->id); $this->template->set('selected_fanpage_id', $selected_fanpage->fanpage_id); } catch (Exception $e) { if ($e->getCode() !== Socializer::FBERRCODE) { $this->addFlash($e->getMessage()); } } } $this->template->set('facebook_token', $facebook_data->id); $twitter_data = $tokens->get_twitter_token($this->c_user->id); $this->template->set('twitter_token', $twitter_data->id); $youtube_data = $tokens->get_youtube_token($this->c_user->id); $this->template->set('youtube_token', $youtube_data->id); $google_data = $tokens->get_google_token($this->c_user->id); $this->template->set('google_token', $google_data->id); $instagram_data = $tokens->get_instagram_token($this->c_user->id); $this->template->set('instagram_token', $instagram_data->id); $timezones = $this->config->item('timezones'); $this->template->set('timezones', $timezones); $current_timezone = User_timezone::get_user_timezone($this->c_user->id, TRUE); $this->template->set('current_timezone', $current_timezone); /*end socialmedia settings*/ /*mention keywords*/ $this->load->config('site_config', TRUE); $keywords_config = $this->config->item('mention_keywords', 'site_config'); $config_count = isset($keywords_config['count']) && $keywords_config['count'] ? $keywords_config['count'] : 10; $availableKeywordsCount = $this->getAAC()->getPlanFeatureValue('brand_reputation_monitoring'); if ($availableKeywordsCount) { $config_count = $availableKeywordsCount; } $keywords = Mention_keyword::inst()->get_user_keywords($this->c_user->id); JsSettings::instance()->add(array('max_keywords' => $config_count)); CssJs::getInst()->add_js(array('libs/handlebar.js', 'libs/handlebars_helpers.js')); $this->template->set('keywords', $keywords); $this->template->set('config_count', $config_count); /*end mention keywords*/ /*analytics*/ $analyticsData = array(); if ($this->session->flashdata('ga_redirect_to_accounts')) { if (!$this->access_token->token1 or !$this->access_token->token2) { $analyticsData['error'] = 'Please, connect your Google Analytics account.'; } else { JsSettings::instance()->add(array('analytics' => array('get_accounts_url' => site_url('settings/analytics/get_accounts')))); CssJs::getInst()->c_js(); $analyticsData['account_info'] = $this->access_token->account_info(); } } else { JsSettings::instance()->add(array('analytics' => array('client_id' => $this->analytics_settings['client_id'], 'redirect_uri' => $this->analytics_settings['redirect_uri']))); CssJs::getInst()->c_js(); $analyticsData['access_token'] = $this->access_token; $analyticsData['account_info'] = $this->access_token->account_info(); } $this->template->set('analyticsData', $analyticsData); /*end analytics*/ CssJs::getInst()->add_js('controller/settings/index.js'); $this->template->render(); }
public function add_cron_post($post) { if ($this->template->is_ajax()) { $post['post_to_groups'] = array($this->profile->id); $post['timezone'] = User_timezone::get_user_timezone($this->c_user->id); $post['user_id'] = $this->c_user->id; $errors = Social_post::validate_post($post); if (empty($errors)) { $errors = Social_post_cron::validate_cron($post); if (empty($errors)) { Social_post_cron::add_new_post($post, $this->c_user->id, $this->profile->id); $result['success'] = true; $result['message'] = lang('post_was_successfully_added'); } else { $result['success'] = false; $result['errors'] = $errors; } } else { $result['success'] = false; $result['errors'] = $errors; } echo json_encode($result); } exit; }
/** * @param $csv_filename * @param $user_id * @param $profile_id * * @return array */ static function getScheduledPostsArray($csv_filename, $user_id, $profile_id) { $error = ''; $posts = []; $row = 1; if (($handle = fopen($csv_filename, "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $post = ['posting_type' => 'schedule', 'post_to_groups' => [$profile_id], 'timezone' => User_timezone::get_user_timezone($user_id)]; //VALIDATE SOCIALS. MUST BE IN FORMT social\social\social. if (isset($data[self::SOCIALS_POSITION])) { $validate_socials = self::validateSocials($data[self::SOCIALS_POSITION]); if ($validate_socials['success']) { $post['post_to_socials'] = $validate_socials['data']; } else { $error = self::getErrorMessage($row, self::SOCIALS_POSITION, $validate_socials['error']); break; } } else { $error = self::getErrorMessage($row, self::SOCIALS_POSITION, 'Can`t find socials'); break; } //VALIDATE SCHEDULED DATE if (!isset($data[self::YEAR_POSITION]) || !isset($data[self::MONTH_POSITION]) || !isset($data[self::DAY_POSITION]) || !isset($data[self::HOUR_POSITION]) || !isset($data[self::MINUTE_POSITION])) { $error = self::getErrorMessage($row, self::YEAR_POSITION . '-' . self::MINUTE_POSITION, 'Wrong scheduled date'); break; } else { $validate_scheduled_date = self::validateScheduleDate($data[self::YEAR_POSITION], $data[self::MONTH_POSITION], $data[self::DAY_POSITION], $data[self::HOUR_POSITION], $data[self::MINUTE_POSITION]); if ($validate_scheduled_date['success']) { $post['schedule_date'] = $validate_scheduled_date['data']; } else { $error = self::getErrorMessage($row, self::YEAR_POSITION . '-' . self::MINUTE_POSITION, $validate_scheduled_date['error']); break; } } //VALIDATE IMAGE if (isset($data[self::IMAGE_POSITION]) && !empty($data[self::IMAGE_POSITION])) { $validate_image = self::validateImage($data[self::IMAGE_POSITION], $user_id); if ($validate_image['success']) { $post['image_name'] = $validate_image['data']; } else { $error = self::getErrorMessage($row, self::IMAGE_POSITION, $validate_image['error']); break; } } //VALIDATE LINK if (isset($data[self::LINK_POSITION]) && !empty($data[self::LINK_POSITION])) { if (filter_var($data[self::LINK_POSITION], FILTER_VALIDATE_URL) === false || strstr($data[self::LINK_POSITION], '.') === false) { $error = self::getErrorMessage($row, self::LINK_POSITION, 'The URL is invalid. (Example: http://google.com)'); break; } else { $post['url'] = $data[self::LINK_POSITION]; } } //VALIDATE STATUS if (isset($data[self::STATUS_POSITION])) { $validate_status = self::validateStatus($data[self::STATUS_POSITION], $post); if ($validate_status['success']) { $post['description'] = $validate_status['data']; } else { $error = self::getErrorMessage($row, self::STATUS_POSITION, $validate_status['error']); break; } } else { $error = self::getErrorMessage($row, self::STATUS_POSITION, 'Status in required.'); break; } $row++; $posts[] = $post; } fclose($handle); } if ($error) { return ['success' => false, 'error' => $error]; } else { return ['success' => true, 'data' => $posts]; } }
/** * Search users and follow them * * @param $args */ public function searchUsers($args) { $user_id = (int) $args['user_id']; $user = new User($user_id); $access_token_id = $args['id']; if (!$user->ifUserHasConfigValue('auto_follow_users_by_search', $access_token_id)) { return; } log_message('TASK_DEBUG', __FUNCTION__ . 'Twitter: start search users to follow.' . $this->getDebugInfo($user, $access_token_id)); $date = new DateTime('UTC 00:00:00'); $user_timezone = new DateTimeZone(User_timezone::get_user_timezone($user_id)); $timezone_offset = $user_timezone->getOffset($date) / 3600; $twitter = $this->inicializeTwitterSocializer($user_id, $args); $user_search_keywords = $user->getUserSearchKeywords($args['profile_id']); $number_of_added_users = $user->getDateToAddUserTwitter($access_token_id); $max_daily_auto_follow_users_by_search = (int) $user->ifUserHasConfigValue('max_daily_auto_follow_users_by_search', $access_token_id); $old_date = DateTime::createFromFormat('!Y-m-d', $number_of_added_users->date); if (!$number_of_added_users->id) { $number_of_added_users->date = $date->format('Y-m-d'); $number_of_added_users->setUserId($user_id); $number_of_added_users->token_id = $access_token_id; $number_of_added_users->count = 0; } elseif ($old_date < $date) { $number_of_added_users = new Number_of_added_users_twitter(); $number_of_added_users->date = $date->format('Y-m-d'); $number_of_added_users->setUserId($user_id); $number_of_added_users->count = 0; $number_of_added_users->token_id = $access_token_id; $number_of_added_users->save(); } elseif ($old_date > $date) { \log_message('TASK_SUCCESS', __FUNCTION__ . 'Twitter: ' . 'Twitter followers already added.' . "\n" . $this->getDebugInfo($user, $access_token_id)); return; } unset($old_date); $age_of_account = $user->ifUserHasConfigValue('age_of_account', $access_token_id); if (!$age_of_account) { $age_of_account = 0; } else { $age_of_account_splited = preg_split('/,/', $age_of_account); if (count($age_of_account_splited)) { if (count($age_of_account_splited) > 1) { $age_of_account = $age_of_account_splited; } } } $tweets_count = $user->ifUserHasConfigValue('number_of_tweets', $access_token_id); if (!$tweets_count) { $tweets_count = 0; } else { $tweets_count_splited = preg_split('/,/', $tweets_count); if (count($tweets_count_splited)) { if (count($tweets_count_splited) > 1) { $tweets_count = $tweets_count_splited; } } } foreach ($user_search_keywords as $user_search_keyword) { $other_field = $user_search_keyword->get_other_fields(); $query = $twitter->create_query($user_search_keyword->keyword, $other_field['include'], $other_field['exclude'], $user_search_keyword->exact); $queryArgs = ['min_followers' => $user_search_keyword->min_followers, 'max_followers' => $user_search_keyword->max_followers, 'max_id' => $user_search_keyword->max_id, 'age_of_account' => $age_of_account, 'tweets_count' => $tweets_count]; $users = $twitter->search_users($query, $queryArgs); foreach ($users['users'] as $twitter_user_id) { if (!$user->isUserHasTwitterFollower($twitter_user_id, $access_token_id)) { if ($max_daily_auto_follow_users_by_search && $max_daily_auto_follow_users_by_search > $number_of_added_users->count || !$max_daily_auto_follow_users_by_search) { $date = DateTime::createFromFormat('!Y-m-d', $number_of_added_users->date); $number_of_added_users->count += 1; $number_of_added_users->save(); } else { $date = DateTime::createFromFormat('!Y-m-d', $number_of_added_users->date); $date->modify('+1 days'); $number_of_added_users = new Number_of_added_users_twitter(); $number_of_added_users->date = $date->format('Y-m-d'); $number_of_added_users->setUserId($user_id); $number_of_added_users->token_id = $access_token_id; $number_of_added_users->count = 1; $number_of_added_users->save(); } $twitter_follower = new Twitter_follower(); $twitter_follower->setFollowerId($twitter_user_id); $twitter_follower->setUserId($user_id); $twitter_follower->setAccessTokenId($access_token_id); $start_date = clone $date; $start_date->modify($timezone_offset * -1 . ' hours'); $end_date = clone $date; $end_date->modify($timezone_offset * -1 . ' hours'); if ($end_date <= $start_date) { $end_date->modify('1 days'); } $twitter_follower->setStartFollowTime($user_search_keyword->getStartDateTime($start_date)->getTimestamp()); $twitter_follower->setEndFollowTime($user_search_keyword->getEndDateTime($end_date)->getTimestamp()); unset($start_date); unset($end_date); $twitter_follower->setNeedFollow(true); $twitter_follower->save(); } } log_message('TASK_SUCCESS', __FUNCTION__ . 'Twitter: ' . 'By keywords ' . $query . ' add ' . count($users['users']) . ' users.' . "\n" . $this->getDebugInfo($user, $access_token_id)); if ($user_search_keyword->max_id != $users['max_id']) { $user_search_keyword->max_id = $users['max_id']; } else { $user_search_keyword->max_id = null; } $user_search_keyword->save(); } }