OSDial

 view release on metacpan or  search on metacpan

lib/OSDial.pm  view on Meta::CPAN

=over 4

=item B<media_delete_filedata( $filename )>

Removes all entries in the C<osdial_media_data> table associated with I<$filename>.

=back

=cut

sub media_delete_filedata {
	my ($self, $filename) = @_;
	$self->debug(3,'media_delete_filedata',"    Deleting Filedata:%s", $filename);
	$self->sql_execute( sprintf('DELETE FROM osdial_media_data WHERE filename=%s;', $self->quote($filename) ),'MDFD' );
	$self->sql_disconnect('MDFD');
}



=over 4

=item B<media_get_filedata( $filename )>

Combines all of the entries in the C<osdial_media_data> table associated with I<$filename> and returns the binary data.

=back

=cut

sub media_get_filedata {
	my ($self, $filename) = @_;
	$self->debug(3,'media_get_filedata',"    Get Filedata:%s", $filename);
	my $filedata;
	while (my $sret = $self->sql_query( sprintf("SELECT filedata FROM osdial_media_data WHERE filename=%s;", $self->quote($filename) ), 'MGFD' ) ) {
		$filedata .= $sret->{filedata};
	}
	$self->sql_disconnect('MGFD');
	return $filedata;
}



=over 4

=item B<media_save_file( $directory, $filename, [$overwrite] )>

Export entry matching I<$filename> and save into the given I<$directory>.
File is skipped and is not overwitten unless I<$overwrite> is true.

=back

=cut

sub media_save_file {
	my ($self,$dir,$filename,$overwrite) = @_;
	$dir = '.' unless ($dir);
	$overwrite = 0 unless ($overwrite);
	unless (-e $dir) {
		mkdir($dir,oct('0777'));
		my ($login,$pass,$uid,$gid) = getpwnam('asterisk');
		chown($uid,$gid,$dir);
	}
	chmod(oct('0777'),$dir);

	my $file = $dir.'/'.$filename;
	$self->debug(3,'media_save_file',"  Adding File:%s  Dir:%s  Name:%s  Overwrite:%s", $file, $dir, $filename, $overwrite);
	return '*'.$filename if (-e $file and $overwrite==0);

	my $filedata = $self->media_get_filedata($filename);
	return '!'.$filename unless ($filedata);

	open(MSF, '>'.$file);
	binmode(MSF);
	print MSF $filedata;
	close(MSF);
	my ($login,$pass,$uid,$gid) = getpwnam('asterisk');
	chown($uid,$gid,$file);
	chmod(oct('0666'),$file);

	return '='.$filename if ($overwrite);
	return '+'.$filename;
}



=over 4

=item B<media_save_files( $directory, [$pattern], [$overwrite] )>

All files matching the regex I<$patten> are exported and saved into the given I<$directory>.
The default I<$pattern> is C<.*>.  Files are skipped and not overwitten unless I<$overwrite> is true.

=back

=cut

sub media_save_files {
	my ($self,$dir,$pattern,$overwrite) = @_;
	$dir = '.' unless ($dir);
	$overwrite = 0 unless ($overwrite);
	$pattern = '.*' unless ($pattern);
	$self->debug(3,'media_save_files',"Adding Files:%s  Pattern:%s  Overwrite:%s", $dir, $pattern, $overwrite);
	unless (-e $dir) {
		mkdir($dir,oct('0777'));
		my ($login,$pass,$uid,$gid) = getpwnam('asterisk');
		chown($uid,$gid,$dir);
	}
	chmod(oct('0777'),$dir);

	my @files;
	while (my $sret = $self->sql_query("SELECT * FROM osdial_media;", "MSF")) {
		if ($sret->{filename} =~ /$pattern/) {
			push @files, $self->media_save_file($dir, $sret->{filename}, $overwrite);
			chmod(oct('0666'),$dir.'/'.$sret->{filename});
		}
	}
	$self->sql_disconnect('MSF');
	return @files;
}



=over 4

=item B<send_email( $host, $port, $user, $pass, $to, $from, $subject, $html, $text )>
=item B<send_email({ host=>$host, port=>$port, user=>$user, pass=>$pass, to=>$to, from=>$from, subject=>$subject, $html=>$html, text=>$text })>

Sends out an email using the given parameters. Returns 1 on success, 0 on failure.

=back

=cut

sub send_email {
	my ($self, $opt1, $port, $user, $pass, $to, $from, $subject, $html, $text) = @_;

	my $host='';

	if (ref($opt1) =~ /HASH/) {
		$host = $opt1->{'host'} if (exists($opt1->{'host'}));
		$port = $opt1->{'port'} if (exists($opt1->{'port'}));
		$user = $opt1->{'user'} if (exists($opt1->{'user'}));
		$pass = $opt1->{'pass'} if (exists($opt1->{'pass'}));
		$to = $opt1->{'to'} if (exists($opt1->{'to'}));
		$from = $opt1->{'from'} if (exists($opt1->{'from'}));
		$subject = $opt1->{'subject'} if (exists($opt1->{'subject'}));
		if (exists($opt1->{'message'})) {
			$text=$opt1->{'message'};
			$html="<pre style=\"font-family:'DejaVu Sans mono','Lucida Console',monospace;\">".$text.'</pre>';
		} else {
			$html = $opt1->{'html'} if (exists($opt1->{'html'}));
			$text = $opt1->{'text'} if (exists($opt1->{'text'}));
		}
	} else {
		$host = $opt1;
	}

	$host='localhost' if (!defined($host) or $host eq '');
	$port='25' if (!defined($port) or $port eq '');

	my $transparams = { 'host' => $host, 'port' => $port };
	if (defined($user) and $user ne '') {
		$transparams->{'sasl_username'} = $user;
		$transparams->{'sasl_password'} = $pass;
	}



( run in 1.458 second using v1.01-cache-2.11-cpan-71847e10f99 )