2010.06.21

XAMPP php.ini

By underblob @ 9:44am — Categories: LAMP, Tech

Note to self: when installing XAMMP for development on your legacy apps, be sure to set PHP short tags in php.ini:

short_open_tag = On

2010.05.21

MySQL Single Record Transfer Between Databases

By underblob @ 2:45pm — Categories: LAMP, Tech

I had a couple records disappear and needed to pull them from backup. The client had already made extensive changes to the database via CMS so I couldn’t copy over the whole database without overwriting all of their changes. Here is the SQL I came up with to transfer a single record:

INSERT INTO target_db.table
SELECT backup_db.table.* 
FROM backup_db.table
WHERE backup_db.table.id = '{000}'

Replace target_db with the name of the database you are copying to.
Replace backup_db with the name of the backup database you are copying from.
Replace table with the name of the table you are handling.
Replace {000} with the id field value of the record to transfer.

2010.04.19

dompdf

By underblob @ 5:20pm — Categories: LAMP, Tech

dompdf is a PHP5 class for rendering HTML/CSS files into PDF. Somehow I’m only learning of this now:
code.google.com/dompdf

2010.04.02

Sending Fax with PHP on Windows

By underblob @ 1:07pm — Categories: LAMP, Tech
Tags: , , , ,

UPDATE 2010.06.21: This article was written for Fax Console on Windows XP, has not been tested against Windows 7 Fax and Scan.

I had a project that I needed to fax documents from a PHP application. We had our own Windows XP box running XAMPP (LAMP for Windows) so I could install whatever and configure however we needed. I searched high and low for a tutorial on how to send fax from PHP on Windows. The PHP COM documentation and MSDN Library left something to be desired so I thought I would put a little something together for posterity…

First thing I discovered was the handy COM class in PHP that allows you to manipulate Windows applications. Pretty cool.

Then I went over to the MSDN Library to see how I can send a fax. Enter the FaxDocument COM Object. The most important property of the FaxDocument object is Body. This property allows you to attach any document or image file (.doc, .txt, .pdf, .jpg, .tif, etc.) for faxing by defining the path to the file.

The next part that was essential for our application was to create a dynamic cover page for each outgoing fax. Instead of rendering a PDF on the server for each outgoing fax, there is a FaxDocument property called CoverPage that allows you to use a Windows template cover page file (.COV). You can create your own .COV file using Windows application Fax Cover Page Editor, which can be found in the Start Menu:

Start Menu -> Programs -> Accessories -> Communications -> Fax -> Fax Cover Page Editor
Or in the system here:
C:\WINDOWS\system32\fxscover.exe

The only catch is that you need to define the UNC to the .COV file in FaxDocument.CoverPage. What the heck is a UNC path? UNC stands for Uniform Naming Convention and is specific to Windows and Windows networking. The format goes something like this: \\COMPUTERNAME\SharedFolder\Resource

Notice that the part of the path immediately following the COMPUTERNAME is a SharedFolder. It is essential that you turn on sharing for the folder that contains the file(s) that you want to use for your FaxDocument.CoverPage. Right-click on the folder you want to share:

Properties (contextual menu) -> Sharing (tab) -> Share this folder on the network (checkbox)

The COMPUTERNAME can be found on Windows by right-clicking on ‘My Computer’:

Properties (contextual menu) -> Computer Name (tab)

When you are testing your PHP script, you can test your UNC path by having PHP echo it. Copy your UNC path and paste it into the Run box found here: Start menu -> Run

If it does not open your .COV file in Windows’ Fax Cover Page Editor application, something is wrong and you need to examine your UNC path, .COV filename and sharing properties.

Here is the final PHP code:

$obj_faxdoc = new COM ( "FaxComEx.FaxDocument" );
$obj_faxdoc->DocumentName = "Fax from PHP"; // This is the name that will appear in the Windows Fax Console
$obj_faxdoc->Sender->Title = "Quote"; // This is a field defined in the .COV
$obj_faxdoc->CoverPageType = 1; // This specifies the .COV location: 0 = No cover page, 1 = Local, 2 = Server
$obj_faxdoc->CoverPage = "\\\\COMPUTERNAME\\SharedFolder\\Template.COV"; // Don't forget double backslash
$obj_faxdoc->Subject = "Fax for John Doe"; // This is a field in the .COV and also shows in Fax Console
$obj_faxdoc->Note = "Please review the following fax."; // This is a field in the .COV
$obj_faxdoc->Body = "/path/to/faxable/file.pdf"; // The path to the file you want to fax
$obj_faxdoc->Recipients->Add ( "888-555-2134", "John Doe" );
$obj_faxdoc->Submit ( "" );

Links

php.net – PHP COM class
msdn.microsoft.com – FaxDocument COM object
xampp.org – LAMP for Windows
en.wikipedia.org – UNC definition

2010.01.18

WP Access to Template Tags

By underblob @ 1:29pm — Categories: LAMP, WordPress

I make a form in a Custom Template in my WordPress Theme. I submit the form to a PHP script in the theme directory via bloginfo ( ‘template_directory’ ). I want to be able to generate an email and have it sent to the admin email address that’s set in the WP installation. How can I access the Template Tags in the stand-alone submission script? By pure dumb luck I found the right two lines of code to paste into my script:

require_once ( $_SERVER[ 'DOCUMENT_ROOT' ] . '/wp-load.php' );
 wp ();

Now I created a reusable script that I can drop into any WordPress Theme by inserting the Site Name via get_bloginfo ( ‘name’ ) into the subject and sending the email to the Site Admin via get_bloginfo ( ‘admin_email’ ).

Links

WordPress.org/Template_Tags
PHP.net/mail-function

2009.12.10

WP SQL Categories

By underblob @ 5:47am — Categories: LAMP, Tech, WordPress

Here is how to get WordPress Post categories via straight SQL query:

 

SELECT
	wp_term_taxonomy.description,
	wp_terms.term_id,
	wp_terms.name,
	wp_terms.slug
FROM wp_term_taxonomy
	JOIN wp_terms ON ( wp_term_taxonomy.term_id = wp_terms.term_id )
WHERE wp_term_taxonomy.taxonomy = 'category'

2009.08.12

URL decode PHP with JS — Removing the Plus Sign

By underblob @ 10:00am — Categories: Javascript, LAMP, Tech
Tags: , , , , , ,

PHP functions for creating and decipering URL-safe strings are urlencode and urldecode.

Javascript functions for creating and deciphering URL-safe strings are escape and unescape.

PHP’s urlencode replaces spaces with + and Javascript’s escape replaces spaces with %20. So if you are decocing a string from PHP with Javascript, you have to replace all the + in the string with spaces using the JS string.replace function. Since + is an operator in Javascript, it has to be escaped with a backslash ( \ ) for the function to execute without error. The g flag has to be included to replace all instances of occurance ( g = global):

string.replace ( /\+/g, ' ' );

Links

urlencode
urldecode
escape
unescape
string.replace

2009.07.24

Using CryptX in WP Template

By underblob @ 5:01pm — Categories: LAMP, Mobile, Tech, WordPress
Tags: , , , , , , ,

Separating the images from content using strip_tags in a WordPress Template to control the page layout. Using the CryptX plugin to encrypt mailto and email addresses so they won’t get picked up by spam bots. After installing the plugin, you can call the cryptx function directly from the Template to apply the encryption:

if ( function_exists ( 'cryptx' ) ) :
	cryptx ( $content, $text, $css, $echo );
endif;

$content is the string to encrypt.
$text is the string to replace the text inside the alt attribute of the <a> or <img> tags.
$css is the css class to assign to the link.
$echo is set to false to return the result in a variable, true to echo the result to the browser.

Links

CryptX plugin page: wordpress.org/cryptx
CryptX author’s site: weber-nrw.de
PHP function to strip HTML and PHP tags: php.net/strip-tags

2009.07.07

Changing .html to .php on XP

By underblob @ 10:38am — Categories: LAMP, Tech
Tags: , , , , ,

Open the Windows CLI and cd to the directory where you want to change the file names, then enter the following command:

ren *.html *.php

Ta-da!

Links

Microsoft CLI reference

2009.05.13

Retreiving a WordPress Page’s $post Using the ID

By underblob @ 4:32pm — Categories: LAMP, Tech, WordPress
$sql = "

SELECT $wpdb->posts.*

FROM $wpdb->posts
WHERE $wpdb->posts.ID = ‘$page_id’
";

$posts = $wpdb->get_results ( $sql, OBJECT );
if ( $posts ) {

foreach ( $posts as $post ) {

setup_postdata ( $post );
if ( $post->ID == $page_id ) break;

}

}

Links

bnee.com/list-pages-in-wordpress-into-a-php-array/

Older Posts »