FileMaster
Search
Toggle Dark Mode
Home
/
.
/
wp-content
/
plugins
/
latepoint
/
lib
/
models
Edit File: location_category_model.php
<?php class OsLocationCategoryModel extends OsModel { public $id, $name, $parent_id, $selection_image_id, $order_number, $short_description; function __construct( $id = false ) { parent::__construct(); $this->table_name = LATEPOINT_TABLE_LOCATION_CATEGORIES; $this->nice_names = array( 'name' => __( 'Location Category Name', 'latepoint' ), 'short_description' => __( 'Location Category Short Description', 'latepoint' ), 'selection_image_id' => __( 'Location Category Selection Image', 'latepoint' ), ); if ( $id ) { $this->load_by_id( $id ); } } public function generate_data_vars(): array { return [ 'id' => $this->id, 'name' => $this->name, ]; } public function count_locations() { $location = new OsLocationModel(); $total_location = $location->filter_allowed_records()->where( [ 'category_id' => $this->id ] )->should_be_active()->count(); $child_categories = new OsLocationCategoryModel(); $child_categories = $child_categories->where( [ 'parent_id' => $this->id ] )->get_results_as_models(); if ( $child_categories ) { foreach ( $child_categories as $child_category ) { $total_location = $total_location + $child_category->count_locations(); } } return $total_location; } public function delete( $id = false ) { if ( ! $id && isset( $this->id ) ) { $id = $this->id; } if ( $id && $this->db->delete( $this->table_name, array( 'id' => $id ), array( '%d' ) ) ) { $this->db->update( LATEPOINT_TABLE_SERVICES, array( 'category_id' => 0 ), array( 'category_id' => $id ), array( '%d' ) ); $this->db->update( $this->table_name, array( 'parent_id' => null ), array( 'parent_id' => $id ), array( '%d' ) ); return true; } else { return false; } } public function get_selection_image_url() { $default_location_image_url = LATEPOINT_IMAGES_URL . 'location-image.png'; return OsImageHelper::get_image_url_by_id( $this->selection_image_id, 'thumbnail', $default_location_image_url ); } protected function properties_to_validate() { $validations = array( 'name' => array( 'presence', 'uniqueness' ), ); return $validations; } public function index_for_select() { $categories = $this->db->get_results( 'SELECT id, name FROM ' . $this->table_name ); $categories_for_select = array(); $categories_for_select[] = array( 'value' => 0, 'label' => __( 'Not categorized', 'latepoint' ), ); foreach ( $categories as $category ) { $categories_for_select[] = array( 'value' => $category->id, 'label' => $category->name, ); } return $categories_for_select; } protected function allowed_params( $role = 'admin' ) { $allowed_params = array( 'id', 'name', 'short_description', 'selection_image_id', 'parent_id', 'order_number', ); return $allowed_params; } protected function params_to_save( $role = 'admin' ) { $params_to_save = array( 'id', 'name', 'short_description', 'selection_image_id', 'parent_id', 'order_number', ); return $params_to_save; } public function get_active_locations( $filter_allowed_records = false ) { if ( ! isset( $this->active_locations ) ) { $location = new OsLocationModel(); if ( $filter_allowed_records ) { $location->filter_allowed_records(); } $location->should_be_active()->where( array( 'category_id' => $this->id ) )->order_by( 'order_number asc' ); $this->active_locations = $location->get_results_as_models(); } return $this->active_locations; } public function get_disabled_locations( $filter_allowed_records = false ) { if ( ! isset( $this->disabled_locations ) ) { $location = new OsLocationModel(); if ( $filter_allowed_records ) { $location->filter_allowed_records(); } $location->where( array( 'category_id' => $this->id, 'status' => LATEPOINT_LOCATION_STATUS_DISABLED, ) )->order_by( 'order_number asc' ); $this->disabled_locations = $location->get_results_as_models(); } return $this->disabled_locations; } protected function get_locations( $filter_allowed_records = false ) { if ( ! isset( $this->locations ) ) { $location = new OsLocationModel(); if ( $filter_allowed_records ) { $location->filter_allowed_records(); } $this->locations = $location->where( array( 'category_id' => $this->id ) )->order_by( 'order_number asc' )->get_results_as_models(); } return $this->locations; } }
Save
Back