/** * Finalize User Profile * @author Howard R <*****@*****.**> * @static * @param int $user_id * @return boolean */ public static function finalize($user_id) { /** create folder **/ $folder_path = wpl_items::get_path($user_id, 2); if (!wpl_folder::exists($folder_path)) { wpl_folder::create($folder_path); } /** Multilingual **/ if (wpl_global::check_multilingual_status()) { $languages = wpl_addon_pro::get_wpl_languages(); $current_language = wpl_global::get_current_language(); foreach ($languages as $language) { wpl_global::switch_language($language); /** Generate Rendered Data **/ wpl_users::generate_rendered_data($user_id); wpl_users::update_text_search_field($user_id); } /** Switch to current language again **/ wpl_global::switch_language($current_language); } else { /** Generate Rendered Data **/ wpl_users::generate_rendered_data($user_id); wpl_users::update_text_search_field($user_id); } /** Generate Email Files **/ wpl_users::generate_email_files($user_id); /** throwing event **/ wpl_events::trigger('user_finalized', $user_id); return true; }
/** * Generates wizard form using dbst fields * @author Howard R <*****@*****.**> * @param objects $fields * @param array $values * @param int $item_id * @param array $finds * @return void */ public function generate_wizard_form($fields, $values, $item_id = 0, &$finds = array()) { /** first validation **/ if (!$fields) { return; } /** get files **/ $path = WPL_ABSPATH . DS . 'libraries' . DS . 'dbst_wizard'; $files = array(); if (wpl_folder::exists($path)) { $files = wpl_folder::files($path, '.php$', false, false); } $wpllangs = wpl_global::check_multilingual_status() ? wpl_addon_pro::get_wpl_languages() : array(); $has_more_details = false; foreach ($fields as $key => $field) { if (!$field) { return; } $done_this = false; $type = $field->type; $label = $field->name; $mandatory = $field->mandatory; $options = json_decode($field->options, true); $value = isset($values[$field->table_column]) ? stripslashes($values[$field->table_column]) : NULL; $kind = isset($values['kind']) ? $values['kind'] : NULL; $display = ''; /** Specific **/ if (trim($field->listing_specific) != '') { $specified_listings = explode(',', trim($field->listing_specific, ', ')); self::$category_listing_specific_array[$field->id] = $specified_listings; if (!in_array($values['listing'], $specified_listings)) { $display = 'display: none;'; } } elseif (trim($field->property_type_specific) != '') { $specified_property_types = explode(',', trim($field->property_type_specific, ', ')); self::$category_property_type_specific_array[$field->id] = $specified_property_types; if (!in_array($values['property_type'], $specified_property_types)) { $display = 'display: none;'; } } elseif (trim($field->user_specific) != '') { $specified_user_types = explode(',', trim($field->user_specific, ', ')); self::$category_user_specific_array[$field->id] = $specified_user_types; if (!in_array($values['membership_type'], $specified_user_types)) { $display = 'display: none;'; } } elseif (isset($options['access'])) { foreach ($options['access'] as $access) { if (!wpl_global::check_access($access)) { $display = 'display: none;'; break; } } } /** More Details **/ if ($type == 'more_details' and !$has_more_details) { echo '<div class="wpl_listing_field_container wpl-pwizard-prow-' . $type . '" id="wpl_listing_field_container' . $field->id . '">'; echo '<label for="wpl_c_' . $field->id . '"><span>' . __($label, WPL_TEXTDOMAIN) . '</span></label>'; echo '<div id="wpl_more_details' . $field->id . '" style="display: none;" class="wpl-fields-more-details-block">'; $has_more_details = true; } elseif ($type == 'more_details' and $has_more_details) { /** Only one details field is acceptable in each category **/ continue; } /** Accesses **/ if (isset($field->accesses) and trim($field->accesses) != '' and wpl_global::check_addon('membership')) { $accesses = explode(',', trim($field->accesses, ', ')); $cur_membership_id = wpl_users::get_user_membership(); if (!in_array($cur_membership_id, $accesses) and trim($field->accesses_message) == '') { continue; } elseif (!in_array($cur_membership_id, $accesses) and trim($field->accesses_message) != '') { echo '<div class="prow wpl_listing_field_container prow-' . $type . '" id="wpl_listing_field_container' . $field->id . '" style="' . $display . '">'; echo '<label for="wpl_c_' . $field->id . '">' . __($label, WPL_TEXTDOMAIN) . '</label>'; echo '<span class="wpl-access-blocked-message">' . __($field->accesses_message, WPL_TEXTDOMAIN) . '</span>'; echo '</div>'; continue; } } /** js validation **/ self::$wizard_js_validation[$field->id] = self::generate_js_validation($field); if (isset($finds[$type])) { echo '<div class="prow wpl_listing_field_container prow-' . $type . '" id="wpl_listing_field_container' . $field->id . '" style="' . $display . '">'; include $path . DS . $finds[$type]; echo '</div>'; continue; } echo '<div class="prow wpl_listing_field_container prow-' . $type . '" id="wpl_listing_field_container' . $field->id . '" style="' . $display . '">'; foreach ($files as $file) { include $path . DS . $file; if ($done_this) { $finds[$type] = $file; break; } } echo '</div>'; } if ($has_more_details) { echo '</div></div>'; } }
/** * Finalize a property and render needed data * @author Howard <*****@*****.**> * @static * @param int $property_id * @param string $mode * @param int $user_id * @return boolean */ public static function finalize($property_id, $mode = 'edit', $user_id = '') { $property = self::get_property_raw_data($property_id); $update_query = self::generate_finalize_query($property, $property_id); $update_query .= "`finalized`='1',"; if (wpl_global::check_access('confirm', $user_id)) { $update_query .= "`confirmed`='1',"; } $update_query = trim($update_query, ', '); $query = "UPDATE `#__wpl_properties` SET " . $update_query . " WHERE `id`='{$property_id}'"; wpl_db::q($query, 'update'); /** Remove Property Cache **/ wpl_property::clear_property_cache($property_id); /** Multilingual **/ if (wpl_global::check_multilingual_status()) { $languages = wpl_addon_pro::get_wpl_languages(); $current_language = wpl_global::get_current_language(); foreach ($languages as $language) { wpl_global::switch_language($language); wpl_property::update_text_search_field($property_id); wpl_property::update_alias($property); wpl_property::update_property_page_title($property); wpl_property::update_property_title($property); /** generate rendered data **/ wpl_property::generate_rendered_data($property_id); } /** Switch to current language again **/ wpl_global::switch_language($current_language); } else { wpl_property::update_text_search_field($property_id); wpl_property::update_alias($property); wpl_property::update_property_page_title($property); wpl_property::update_property_title($property); /** generate rendered data **/ wpl_property::generate_rendered_data($property_id); } /** Fixes **/ wpl_property::fix_aliases($property, $property_id); wpl_property::update_numbs($property_id, $property); /** throwing events **/ if ($mode == 'add') { wpl_events::trigger('add_property', $property_id); } elseif ($mode == 'edit') { wpl_events::trigger('edit_property', $property_id); } if (wpl_global::check_access('confirm', $user_id)) { wpl_events::trigger('property_confirm', $property_id); } return true; }
/** * Returns column with multilingual columns * @author Howard <*****@*****.**> * @static * @param array $columns * @param string $table * @return array */ public static function get_multilingual_columns($columns, $validation = true, $table = 'wpl_properties') { if (wpl_global::check_multilingual_status()) { $valid_columns = wpl_db::columns($table); $languages = wpl_addon_pro::get_wpl_languages(); foreach ($columns as $column) { foreach ($languages as $language) { $language_column = wpl_addon_pro::get_column_lang_name($column, $language, false); if ($validation and in_array($language_column, $valid_columns)) { $columns[] = $language_column; } elseif (!$validation) { $columns[] = $language_column; } } } } return $columns; }
<?php /** no direct access **/ defined('_WPLEXEC') or die('Restricted access'); if ($type == 'languages' and !$done_this) { $languages = wpl_addon_pro::get_wpl_languages(); $lang_options = wpl_addon_pro::get_wpl_language_options(); $max_langs = max(wpl_global::get_setting('max_wpllangs'), count($languages)); $wp_pages = wpl_global::get_wp_pages(); ?> <div class="prow wpl_setting_form_container wpl-setting-langs wpl_st_type<?php echo $setting_record->type; ?> wpl_st_<?php echo $setting_record->setting_name; ?> " id="wpl_st_<?php echo $setting_record->id; ?> "> <div class="languages-wp"> <div class="wpl-btns-wp"> <button onclick="wpl_languages_save();" class="wpl-button button-1"> <?php echo __('Save', WPL_TEXTDOMAIN); ?> <span class="ajax-inline-save" id="wpl_ajax_loader_<?php echo $setting_record->id; ?> "></span>