App-Office-CMS

 view release on metacpan or  search on metacpan

lib/App/Office/CMS/Database/Site.pm  view on Meta::CPAN

name
/);
	my($data) = {};

	for (@field)
	{
		$$data{$_} = $$site{$_};
	}

	# Set this no matter whether we're adding or updating.

	$$data{upper_name} = uc $$data{name};

	if ($context eq 'add')
	{
		$$site{id} = $self -> db -> insert_hash_get_id($table_name, $data);
	}
	else
	{
		$self -> db -> simple -> update($table_name, $data, {id => $$site{id} });
	}

	$self -> log(debug => "Saved ($context) site '$$site{name}' with id $$site{id}");

} # End of save_site_record.

# --------------------------------------------------

sub search
{
	my($self, $name) = @_;

	$self -> log(debug => "search($name)");

	my($result)   = [];
	my($site_set) = $self -> get_sites_by_approx_name($name);

	$self -> log(debug => "Site match count: " . scalar @$site_set);

	my($design_set);

	for my $site (@$site_set)
	{
		# This works because every design belongs to a site,
		# and you can't create a site without designs.

		$design_set = $self -> db -> design -> get_designs_by_site_id($$site{id});

		for my $design (@$design_set)
		{
			$self -> build_search_result('Site', $result, $site, $design);
		}
	}

	return $result;

} # End of search.

# --------------------------------------------------

sub update
{
	my($self, $site, $design) = @_;

	$self -> log(debug => "update($$site{name})");
	$self -> log(debug => '-' x 50);
	$self -> log(debug => "Site: $_ => $$site{$_}") for sort keys %$site;
	$self -> log(debug => '-' x 50);
	$self -> log(debug => "Design: $_ => $$design{$_}") for sort keys %$design;
	$self -> log(debug => '-' x 50);

	my($action) = $$site{exact_match} ? 'update' : 'add';

	$self -> save_site_record($action, $site);

	if ($action eq 'add')
	{
		$self -> db -> session -> param(edit_site_id => $$site{id});
	}

	$$design{site_id} = $$site{id};

	$self -> db -> design -> add($site, $design);

	return ucfirst "$action site '$$site{name}'";

} # End of update.

# --------------------------------------------------

1;



( run in 1.011 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )