NAME

Nile::Setting - Application global settings database table manager.

SYNOPSIS

# get setting object instance
$setting = $self->app->setting;

# load settings from database to the setting object.
$setting->load("settings", "name", "value");

# get settings
say $setting->get("email");
say $setting->get("website", "default value");
    
# automatic getter support
say $setting->email; # same as $setting->get('email');

# set settings variables.
$setting->set("page_views", $count);
$setting->set(%vars);

# automatic setter support
$setting->email('ahmed@mewsoft.com'); # same as $setting->set('email', 'ahmed@mewsoft.com');

# delete settings from memory and database table.
$setting->delete(@names);

DESCRIPTION

Nile::Setting - Application global settings database table manager.

This class to manage an optional application shared settings database table the same way you share the var and config object.

Example of a suggested database table structure.

CREATE TABLE settings (
    name varchar(255),      # name_column
    value varchar(255)      # value_column, change type to TEXT if needed
) ENGINE=InnoDB default CHARACTER SET=utf8;

Then you need to call the load setting once at the start of the application after you connect to the database.

# get setting object instance
$setting = $self->app->setting;

# load settings from database to the setting object.
$setting->load("settings", "name", "value");

Now you can get, set and delete the settings anywhere in your application.

# get settings
say $setting->get("email");
say $setting->get("website", "default value");
    
# automatic getter support
say $setting->email; # same as $setting->get('email');

# set settings variables.
$setting->set("page_views", $count);
$setting->set(%vars);

# automatic setter support
$setting->email('ahmed@mewsoft.com'); # same as $setting->set('email', 'ahmed@mewsoft.com');

# delete settings from memory and database table.
$setting->delete(@names);

setting_table_name()

# set database settings table name
$setting->setting_table_name("settings");

# get database settings table name
$setting->setting_table_name;

Get and set the settings database table name.

setting_name_column()

# set settings table column name for the 'name_column'.
$setting->setting_name_column("name");

# get settings table column name for the 'name_column'.
$setting->setting_name_column;

Get and set the settings database table column name.

setting_value_column()

# set settings table column name for the 'value_column'.
$setting->setting_value_column("value");

# get settings table column name for the 'value_column'.
$setting->setting_value_column;

Get and set the settings database table column value_column.

load()

# load settings from database to the setting object.
$setting->load($db_table, $name_column, $value_column);

Load the settings from database table to the setting object. This method can be chained.

unload()

# clears all settings from memory.
$setting->unload;

Resets the setting object and clear all settings from memory. This does not update the database table. This method can be chained.

vars()

# get all settings as a hash or a hash ref.
%vars = $setting->vars();
$vars = $setting->vars();

Returns all settings as a hash or a hash reference.

set()

# set settings variables.
$setting->set("page_views", $count);
$setting->set(%vars);

# automatic setter support
$setting->email('ahmed@mewsoft.com'); # same as $setting->set('email', 'ahmed@mewsoft.com');

Set settings variables.

get()

# get settings
say $setting->get("email");
say $setting->get("website", "default value");
    
# automatic getter support
say $setting->email; # same as $setting->get('email');

Returns settings variables.

list()

# get a list of settings variables.
@vars = $setting->list(@names);

Returns a list of settings variables.

keys()

# returns all settings names.
@names = $setting->keys;

Returns all settings names.

exists()

# check if a setting variable exist or not.
$found = $setting->exists($name);

Check if a setting variable exist or not.

delete()

# delete settings from memory and database table.
$setting->delete(@names);

Delete a list of settings from memory and database table..

clear()

# delete all settings from memory and database table.
$setting->clear(1);

Delete all settings from memory and database table. This can not be undone. You must pass a true value for the function as a confirmation that you want to do the job.

Bugs

This project is available on github at https://github.com/mewsoft/Nile.

HOMEPAGE

Please visit the project's homepage at https://metacpan.org/release/Nile.

SOURCE

Source repository is at https://github.com/mewsoft/Nile.

SEE ALSO

See Nile for details about the complete framework.

AUTHOR

Ahmed Amin Elsheshtawy, احمد امين الششتاوى <mewsoft@cpan.org> Website: http://www.mewsoft.com

COPYRIGHT AND LICENSE

Copyright (C) 2014-2015 by Dr. Ahmed Amin Elsheshtawy احمد امين الششتاوى mewsoft@cpan.org, support@mewsoft.com, https://github.com/mewsoft/Nile, http://www.mewsoft.com

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.