".__( 'Only letters, numbers, hyphen and underscores allowed in form identificative name', 'accua-form-api')."
";
}
if (substr($fid,0,2) == '__') {
$error .= "".__( 'The identificative name can\'t start with two underscores (__)', 'accua-form-api')."
";
}
if (strlen($fid) > 70) {
$error .= "".__( 'You cannot use more than 70 characters for the identificative name', 'accua-form-api')."
";
}
if ($error === '' && (isset($_GET['clonefrom'])&&$_GET['clonefrom']!=='')) {
$error .= _accua_forms_test_clonefrom($fid);
}
if ($error === '') {
return accua_forms_edit_page($fid);
} else {
return accua_forms_add_page($error);
}
}
?>
array (
'id' => "first_name",
'name' => "First Name",
'type' => "textfield",
'description' => 'This is the first name',
),
'last_name' => array (
'id' => "last_name",
'name' => "Last Name",
'type' => "textfield",
'description' => 'This is the last name',
),
'email' => array (
'id' => "email",
'name' => "Email",
'type' => "email",
'description' => 'This is the email',
),
);
*/
$avail_fields = get_option('accua_forms_avail_fields', array());
$default_form_values = array(
'id' => '',
'name' => '',
'type' => 'textfield',
'description' => '',
'default_value' => '',
'allowed_values' => '',
);
$editing = false;
$adding = true;
if (!empty($_POST['action'])) {
$post = stripslashes_deep($_POST);
switch($post['action']) {
case 'edit-form-field':
if (empty($avail_fields[$post['form-field-id']])) {
$message .= 'Field "'.htmlspecialchars($post['form-field-id']).'" doesn\'t exists';
} else {
if (empty($post['delete-field'])) {
$avail_fields[$post['form-field-id']] = array(
'id' => $post['form-field-id'],
'name' => $post['form-field-name'],
'type' => $post['form-field-type'],
'description' => $post['form-field-description'],
'default_value' => $post['form-field-default-value'],
'allowed_values' => $post['form-field-allowed-values'],
);
$message .= sprintf( __( 'Field "%s" updated', 'accua-form-api'), htmlspecialchars($post['form-field-id']) );
} else {
unset ($avail_fields[$post['form-field-id']]);
$message .= sprintf( __( 'Field "%s" deleted', 'accua-form-api'), htmlspecialchars($post['form-field-id']) );
}
update_option('accua_forms_avail_fields', $avail_fields);
}
break;
case 'add-form-field':
$fill_form_fields = true;
$valid = true;
if (empty($post['form-field-id']) || !preg_match('/^[a-z0-9_-]+$/i', $post['form-field-id'])) {
$message .= "
".__( 'Only letters, numbers, hyphen and underscores allowed in field identificative slug', 'accua-form-api')."
";
$valid = false;
}
if(substr($post['form-field-id'], 0, 2) == '__') {
$message .= "
".__( 'The field identificative slug can\'t start with two underscores (__)', 'accua-form-api')."
";
$valid = false;
}
if (!empty($avail_fields[$post['form-field-id']])) {
$message .= sprintf( __( '
A field with identificative slug "%s" already exists
Field "%s" deleted', 'accua-form-api'), htmlspecialchars($post['form-field-id']) );
$valid = false;
}
if (strlen($post['form-field-id']) > 70) {
$message .= "
".__( 'The identificative slug cannot be longer than 70 characters', 'accua-form-api')."
";
$valid = false;
}
if ($valid) {
$fill_form_fields = false;
$avail_fields[$post['form-field-id']] = array(
'id' => $post['form-field-id'],
'name' => $post['form-field-name'],
'type' => $post['form-field-type'],
'description' => $post['form-field-description'],
'default_value' => $post['form-field-default-value'],
'allowed_values' => $post['form-field-allowed-values'],
);
update_option('accua_forms_avail_fields', $avail_fields);
$message .= sprintf( __( 'Field "%s" created', 'accua-form-api'), htmlspecialchars($post['form-field-id']) );
}
if ($fill_form_fields) {
$editing = true;
$default_form_values = array(
'id' => $post['form-field-id'],
'name' => $post['form-field-name'],
'type' => $post['form-field-type'],
'description' => $post['form-field-description'],
'default_value' => $post['form-field-default-value'],
'allowed_values' => $post['form-field-allowed-values'],
);
}
break;
}
} else if (!empty($_GET['edit-fid'])) {
$fid = stripslashes($_GET['edit-fid']);
if (empty($avail_fields[$fid])) {
$message .= sprintf( __( 'Field "%s" doesn\'t exists', 'accua-form-api'), $fid );
} else {
$adding = false;
$editing = true;
$default_form_values = $avail_fields[$fid];
}
}
?>
' . __('Search results for “%s”') . '', esc_html( stripslashes($_REQUEST['s']) ) ); ?>
search_box( $tax->labels->search_items, 'tag' ); ?>
*/ ?>
labels->popular_items ) ) {
if ( current_user_can( $tax->cap->edit_terms ) )
$tag_cloud = wp_tag_cloud( array( 'taxonomy' => $taxonomy, 'echo' => false, 'link' => 'edit' ) );
else
$tag_cloud = wp_tag_cloud( array( 'taxonomy' => $taxonomy, 'echo' => false ) );
if ( $tag_cloud ) :
?>
labels->popular_items; ?>
cap->edit_terms) ) {
// Back compat hooks. Deprecated in preference to {$taxonomy}_pre_add_form
if ( 'category' == $taxonomy )
do_action('add_category_form_pre', (object)array('parent' => 0) );
elseif ( 'link_category' == $taxonomy )
do_action('add_link_category_form_pre', (object)array('parent' => 0) );
else
do_action('add_tag_form_pre', $taxonomy);
do_action($taxonomy . '_pre_add_form', $taxonomy);
*/
$types = array(
'textfield' => __( 'Text Field', 'accua-form-api'),
'textarea' => __( 'Text Area', 'accua-form-api'),
'email' => __( 'Email', 'accua-form-api'),
'autoreply_email' => __( 'Autoreply Email', 'accua-form-api'),
'checkbox' => __( 'Checkbox','accua-form-api'),
'select' => __('Select', 'accua-form-api'),
'radio' => __( 'Radio buttons', 'accua-form-api'),
'multiselect' => __( 'Multiple selections area', 'accua-form-api'),
'multicheckbox' => __( 'Multiple checkboxes', 'accua-form-api'),
'post-multicheckbox' => __( 'Multiple post checkboxes', 'accua-form-api'),
'hidden' => __('Hidden value', 'accua-form-api'),
'file' => __('File upload', 'accua-form-api'),
'submit' => __( 'Submit button', 'accua-form-api'),
'html' => __( 'Custom HTML', 'accua-form-api'),
'captcha' => __( 'Captcha', 'accua-form-api'),
'password' => 'Password',
'password-and-confirm' => __( 'Password and password confirmation','accua-form-api'),
);
?>
accua_forms_avail_fields:', htmlspecialchars(print_r($avail_fields, true)), ''; */
}
function accua_forms_settings_page() {
?>
'',
'error_message' => '',
'emails_from' => '',
'admin_emails_to' => '',
'emails_bcc' => '',
'admin_emails_subject' => '',
'admin_emails_message' => '',
'confirmation_emails_subject' => '',
'confirmation_emails_message' => '',
'layout' => 'sidebyside',
'style_margin' => '',
'style_border_color' => '',
'style_border_width' => '',
'style_border_radius' => '',
'style_background_color' => '',
'style_padding' => '',
'style_color' => '',
'style_font_size' => '',
'style_field_spacing' => '',
'style_field_border_color' => '',
'style_field_border_width' => '',
'style_field_border_radius' => '',
'style_field_background_color' => '',
'style_field_padding' => '',
'style_field_color' => '',
'style_submit_border_color' => '',
'style_submit_border_width' => '',
'style_submit_border_radius' => '',
'style_submit_background_color' => '',
'style_submit_padding' => '',
'style_submit_color' => '',
'style_submit_font_size' => '',
);
$empty_file_data = array(
'valid_extensions' => '',
'max_size' => '',
'dest_path' => '',
);
if($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST['accua_form_save_form_settings'])) {
$post = stripslashes_deep($_POST);
$post += $empty_form_data;
$post += $empty_file_data;
$form_data = array();
$file_data = array();
foreach($empty_form_data as $key=>$val){
$form_data[$key] = $post[$key];
}
foreach($empty_file_data as $key=>$val){
$file_data[$key] = $post[$key];
}
update_option('accua_forms_default_form_data', $form_data);
update_option('accua_forms_default_file_field_data', $file_data);
} else {
$form_data = get_option('accua_forms_default_form_data',array()) + $empty_form_data;
$file_data = get_option('accua_forms_default_file_field_data',array()) + $empty_file_data;
}
?>
: >Labels on the left of the fields >Labels on top of the fields
:
:
:
:
:
:
:
:
:
*/ ?>
true,
'editor_class' => 'accua_form_value',
'tinymce' => array(
'theme_advanced_buttons1' => 'bold,italic,underline,|,bullist,numlist,'));
?>
0) {
_e( 'This value is limited by server upload limits of ', 'accua-form-api');
echo AccuaForm_Element_File::format_size($server_max_size).". ";
_e( 'If you need a greater limit you should ask to the server administrator.', 'accua-form-api');
}
?>
:
.
*/ ?>
array(),
'title' => '',
'success_message' => '',
'error_message' => '',
'emails_from' => '',
'admin_emails_to' => '',
'emails_bcc' => '',
'admin_emails_subject' => '',
'admin_emails_message' => '',
'confirmation_emails_subject' => '',
'confirmation_emails_message' => '',
'use_ajax' => true,
'layout' => 'sidebyside',
'style_margin' => '',
'style_border_color' => '',
'style_border_width' => '',
'style_border_radius' => '',
'style_background_color' => '',
'style_padding' => '',
'style_color' => '',
'style_font_size' => '',
'style_field_spacing' => '',
'style_field_border_color' => '',
'style_field_border_width' => '',
'style_field_border_radius' => '',
'style_field_background_color' => '',
'style_field_padding' => '',
'style_field_color' => '',
'style_submit_border_color' => '',
'style_submit_border_width' => '',
'style_submit_border_radius' => '',
'style_submit_background_color' => '',
'style_submit_padding' => '',
'style_submit_color' => '',
'style_submit_font_size' => '',
);
if ($fid === false) {
return $empty_form_data;
}
$default_form_data = get_option('accua_forms_default_form_data',array());
if ($fid === null) {
return $default_form_data + $empty_form_data;
}
$forms_data = get_option('accua_forms_saved_forms', array());
if ($restore_trash) {
$trash_data = get_option('accua_forms_trash_forms', array());
if (isset($trash_data[$fid])) {
$forms_data[$fid] = $trash_data[$fid];
update_option('accua_forms_saved_forms', $forms_data);
unset($trash_data[$fid]);
update_option('accua_forms_trash_forms', $trash_data);
}
}
if (isset($forms_data[$fid])) {
$form_data = array(
'_overrided' => $forms_data[$fid]
) + $forms_data[$fid] + $default_form_data + $empty_form_data;
/*
if ($form_data['fields']) {
foreach ($form_data['fields'] as $i => $istance_data) {
// TODO: popuplate default fields data?
}
}
*/
return $form_data;
} else if ($return_empty) {
return array(
'_overrided' => array()
) + $default_form_data + $empty_form_data;
} else {
return null;
}
}
function _accua_forms_style_parameters($params) {
$ret = '';
foreach ($params as $key => $value) {
$value = trim($value);
if ($value !== '') {
if (is_numeric($value)) {
$ret .= "{$key}:{$value}px;";
} else {
$ret .= "{$key}:{$value};";
}
if ($key == 'border-width') {
$ret .= "border-style:solid;";
}
}
}
return $ret;
}
add_action('accua_form_alter', 'accua_forms_form_generate', -999, 2);
function accua_forms_form_generate($baseid, $form) {
if (substr($baseid, 0, 14) == '__accua-form__') {
$fid = substr($baseid,14);
$form_data = _accua_forms_get_form_data($fid, false);
/*
echo '";
*/
if ($form_data) {
$form_style = _accua_forms_style_parameters(array(
'margin' => $form_data['style_margin'],
'border-color' => $form_data['style_border_color'],
'border-width' => $form_data['style_border_width'],
'border-radius' => $form_data['style_border_radius'],
'background' => $form_data['style_background_color'],
'padding' => $form_data['style_padding'],
'color' => $form_data['style_color'],
'font-size' => $form_data['style_font_size'],
));
$field_style = _accua_forms_style_parameters(array(
'margin-bottom' => $form_data['style_field_spacing'],
'border-color' => $form_data['style_field_border_color'],
'border-width' => $form_data['style_field_border_width'],
'border-radius' => $form_data['style_field_border_radius'],
'background' => (trim($form_data['style_field_background_color']) === '')?'transparent':$form_data['style_field_background_color'],
'padding' => $form_data['style_field_padding'],
'color' => (trim($form_data['style_field_color']) === '')?$form_data['style_color']:$form_data['style_field_color'],
'font-size' => $form_data['style_font_size'],
));
$field_properties = array();
if ($field_style !== '') {
$field_properties['style'] = $field_style;
}
$submit_style = _accua_forms_style_parameters(array(
'border-color' => $form_data['style_submit_border_color'],
'border-width' => $form_data['style_submit_border_width'],
'border-radius' => $form_data['style_submit_border_radius'],
'background' => $form_data['style_submit_background_color'],
'padding' => $form_data['style_submit_padding'],
'color' => $form_data['style_submit_color'],
'font-size' => $form_data['style_submit_font_size'],
));
$submit_properties = array();
if ($submit_style !== '') {
$submit_properties['style'] = $submit_style;
}
if ($form_style !== '') {
$form->configure(array('style' => $form_style));
}
if (!empty($form_data['use_ajax'])){
$form->configure(array(
"accua_ajax" => 1,
));
}
$add_submit = true;
$fieldset_open = false;
$avail_fields = get_option('accua_forms_avail_fields', array());
foreach ($form_data['fields'] as $istance_data) {
if (empty($avail_fields[$istance_data['ref']])) {
$field_data = array();
if (!empty($istance_data['ref'])) {
if ($istance_data['ref'] == '__fieldset-begin') {
$field_data = array(
'id' => '__fieldset-begin',
'name' => __('Fieldset begin', 'accua-form-api'),
'type' => 'fieldset-begin',
'description' => '',
);
} else if ($istance_data['ref'] == '__fieldset-end') {
$field_data = array(
'id' => '__fieldset-end',
'name' => __('Fieldset end', 'accua-form-api'),
'type' => 'fieldset-end',
'description' => '',
);
}
}
} else {
$field_data = $avail_fields[$istance_data['ref']];
}
$field_data += array(
'id' => '__html',
'name' => __( 'Custom HTML content', 'accua-form-api'),
'type' => 'html',
'description' => __('Use this special field to inject raw HTML in the form. You can use this multiple times.', 'accua-form-api'),
'default_value' => '',
'allowed_values' => '',
);
$istance_data += array(
'istance_id' => $field_data['id'],
'widget_number' => '',
'ref' => $field_data['id'],
'label' => $field_data['name'],
'default_value' => $field_data['default_value'],
'allowed_values' => $field_data['allowed_values'],
);
$element = null;
$allowed_val = trim($istance_data['allowed_values']);
if ($field_data['type'] == 'post-multicheckbox') {
$posts = accua_get_pages($allowed_val);
$allowed_values = array();
foreach ($posts as $p) {
//$allowed_values[$p->ID] = apply_filters( 'the_title', $p->post_title, $p->ID );
$allowed_values[$p->ID] = $p->post_title;
}
} else {
if ($field_data['type'] == 'file') {
$filedata = get_option('accua_forms_default_file_field_data',array());
$filedata += array(
'valid_extensions' => '',
'max_filesize' => '',
'dest_path' => '',
);
if ($allowed_val == '') {
$allowed_val = trim($filedata['valid_extensions']);
}
}
$allowed_val = explode("\n",$allowed_val);
$allowed_values = array();
foreach ($allowed_val as $val) {
$val = explode('|',$val,2);
$val[0] = trim($val[0]);
/*
if (empty($val[0])) {
continue;
}
*/
if ((!isset($val[1])) || (trim($val[1])==='')) {
if ($val[0] === '') {
continue;
} else {
$val[1] = $val[0];
}
}
$allowed_values[$val[0]] = $val[1];
}
}
switch ($field_data['type']) {
case 'textarea':
$element = new Element_Textarea($istance_data['label'], $istance_data['istance_id'], $field_properties+array('cols' => '50'));
break;
case 'hidden':
$element = new Element_Hidden($istance_data['istance_id'], $istance_data['default_value']);
break;
case 'checkbox':
$val = empty($istance_data['default_value'])?'1':$istance_data['default_value'];
$lab = $istance_data['label'];
if (!empty($istance_data['required'])) {
$lab .= '
* ';
}
$element = new AccuaForm_Element_Checkbox('', $istance_data['istance_id'], array($val => $lab));
break;
case 'select':
if (!isset($allowed_values[''])) {
$allowed_values = array('' => '') + $allowed_values;
}
$element = new Element_Select($istance_data['label'], $istance_data['istance_id'], $allowed_values, $field_properties);
break;
case 'radio':
$element = new AccuaForm_Element_Radio($istance_data['label'], $istance_data['istance_id'], $allowed_values);
break;
case 'multiselect':
$element = new Element_Select($istance_data['label'], $istance_data['istance_id'], $allowed_values, $field_properties+array('multiple' => true));
break;
case 'multicheckbox':
$element = new AccuaForm_Element_Checkbox($istance_data['label'], $istance_data['istance_id'], $allowed_values);
case 'post-multicheckbox':
$element = new AccuaForm_Element_Checkbox($istance_data['label'], $istance_data['istance_id'], $allowed_values);
break;
case 'file':
$fdata = array();
if ($allowed_values) {
$fdata['validExtensions'] = array_keys($allowed_values);
}
if ($filedata['max_size'] !== ''){
$fdata['maxSize'] = $filedata['max_size'];
}
$fdata['destPath'] = _accua_forms_get_abs_dest_path($filedata['dest_path']);
$element = new AccuaForm_Element_File($istance_data['label'], $istance_data['istance_id'], $field_properties+$fdata);
break;
case 'html':
$element = new Element_HTML($istance_data['default_value']);
break;
case 'email':
case 'autoreply_email':
$element = new AccuaForm_Element_Email($istance_data['label'], $istance_data['istance_id'], $field_properties);
$element->setValidation(new Validation_Email(
str_replace('%element%', $istance_data['label'], __("Attention: '%element%' must contain an email address.", 'accua-form-api'))
));
//"Errore: '{$istance_data['label']}' deve contenere un indirizzo email valido."
break;
case 'fieldset-begin':
if ($fieldset_open) {
$form->addElement(new AccuaForm_Element_FieldsetEnd());
} else {
$fieldset_open = true;
}
$element = new AccuaForm_Element_FieldsetBegin($istance_data['label']);
break;
case 'fieldset-end':
if ($fieldset_open) {
$element = new AccuaForm_Element_FieldsetEnd();
$fieldset_open = false;
}
break;
case 'submit':
$add_submit = false;
$element = new Element_Button($istance_data['label'], 'submit', $submit_properties+array('name' => $istance_data['istance_id'], 'value' => $istance_data['default_value']));
break;
case 'captcha':
$element = new AccuaForm_Element_Captcha ($istance_data['label'], array("description" => ""));
break;
case 'password':
$element = new Element_Password($istance_data['label'], $istance_data['istance_id'], $field_properties);
break;
case 'password-and-confirm':
$id_2 = "___{$istance_data['istance_id']}___confirmpass";
$element = new Element_Password(__("Password", 'accua-form-api'), $istance_data['istance_id'], $field_properties);
$element_conf = new Element_Password(__("Confirm password", 'accua-form-api'), $id_2, $field_properties);
$element_conf->setValidation(new AccuaForm_Validation_Password());
break;
//case 'textfield':
default:
$element = new Element_Textbox($istance_data['label'], $istance_data['istance_id'], $field_properties);
break;
}
if (!empty($istance_data['required'])) {
$element->setClass('accuaforms-field-required');
if($field_data['type']!='password-and-confirm') {
$element->setValidation(new Validation_Required(
str_replace('%element%', $istance_data['label'], __("Attention: '%element%' is a required field.", 'accua-form-api'))
));
} else {
$element->setValidation(new Validation_Required(
str_replace('%element%', $istance_data['label'], __("Attention: Passwords are required fields.", 'accua-form-api'))
));
}
}
if ($elementName = $element->getName()) {
$element->setClass('accuaform-fieldname-'.$elementName);
}
if ($field_data['type']) {
$element->setClass('accuaform-fieldtype-'.$field_data['type']);
}
$form->addElement($element);
if($element_conf!=NULL) {
$form->addElement($element_conf);
$element_conf=NULL;
}
}
if ($fieldset_open) {
$form->addElement(new AccuaForm_Element_FieldsetEnd());
$fieldset_open = false;
}
if ($add_submit) {
$form->addElement(new Element_Button(__('Submit', 'accua-form-api'), 'submit', $submit_properties));
}
}
}
}
function accua_forms_aggregate_submitted_data(&$replace_map, $params = array()) {
if (empty($params['txt']) && empty($params['html']) && empty($params['json']) && empty($params['email'])) {
$params += array(
'txt' => true,
'html' => true,
'json' => true,
'email' => true,
);
}
if (!empty($params['txt'])) {
$replace_map['__submitted_txt'] = implode("\n",$replace_map['__submitted_txt_raw']);
}
if (!empty($params['html'])) {
$replace_map['__submitted_html'] = implode('
',$replace_map['__submitted_html_raw']);
}
if (!empty($params['json'])) {
$replace_map['__submitted_json'] = json_encode($replace_map['__submitted_json_raw']);
}
if (!empty($params['email'])) {
$replace_map['__autoreply_email'] = implode('; ', $replace_map['__autoreply_email_raw']);
}
}
add_filter('accua_form_validate', 'accua_forms_validation_handler', 10, 4);
function accua_forms_validation_handler($valid, $submittedID, $submittedData, $form){
if (substr($submittedID, 0, 14) == '__accua-form__') {
$fid = substr($submittedID,14);
$form_data = _accua_forms_get_form_data($fid, false);
if ($form_data) {
return apply_filters('accua_forms_validation', $valid, $fid, $submittedData, $form);
}
}
return $valid;
}
add_action('accua_form_submit', 'accua_forms_form_submission_handler', -10, 3);
function accua_forms_form_submission_handler($submittedID, $submittedData, $form) {
if ( empty( $GLOBALS['wp_rewrite'] ) )
$GLOBALS['wp_rewrite'] = new WP_Rewrite();
if (!class_exists('AccuaConditionalReplacer')){
require_once('AccuaConditionalReplacer.php');
}
if (substr($submittedID, 0, 14) == '__accua-form__') {
$fid = substr($submittedID,14);
$form_data = _accua_forms_get_form_data($fid, false);
if ($form_data) {
global $wpdb;
$time = time();
$wpdb->insert(
$wpdb->prefix . 'accua_forms_submissions',
array (
'afs_form_id' => $fid,
'afs_post_id' => $form->stats['pid'],
'afs_ip' => $form->stats['ip'],
'afs_uri' => $form->stats['uri'],
'afs_referrer' => $form->stats['referrer'],
'afs_lang' => $form->stats['lang'],
'afs_created' => gmdate('Y-m-d H:i:s', $form->stats['created']),
'afs_submitted' => gmdate('Y-m-d H:i:s', $time),
'afs_stats' => json_encode(array(
'user_agent' => $form->stats['user_agent'],
'platform' => $form->stats['platform'],
'tentatives' => $form->stats['tentatives'],
'submit_method' => $form->stats['submit_method'],
)),
)
);
$submission_id = $form->stats['submission_id'] = $wpdb->insert_id;
$replace_map = array(
'__fid' => $fid,
'__subid' => $submission_id,
'__pid' => $form->stats['pid'],
'__ip' => $form->stats['ip'],
'__uri' => $form->stats['uri'],
'__url' => $form->stats['url'],
'__referrer' => $form->stats['referrer'],
'__lang' => $form->stats['lang'],
'__locale' => $form->stats['locale'],
'__created' => $form->stats['created'],
'__created_day' => date('l j F Y', $form->stats['created']),
'__created_day_month_year' => date('j F Y', $form->stats['created']),
'__created_hour' => date('G:i', $form->stats['created']),
'__submitted' => $time,
'__submitted_day' => date('l j F Y', $time),
'__submitted_day_month_year' => date('j F Y', $time),
'__submitted_hour' => date('G:i', $time),
'__confirmation_emails_message' => $form_data['confirmation_emails_message'],
'__user_agent' => $form->stats['user_agent'],
'__platform' => $form->stats['platform'],
'__tentatives' => $form->stats['tentatives'],
'__submit_method' => $form->stats['submit_method'],
);
$avail_fields = get_option('accua_forms_avail_fields', array());
$replace_map['__autoreply_email_raw'] = array();
$replace_map['__submitted_txt_raw'] = array();
$replace_map['__submitted_html_raw'] = array();
$replace_map['__submitted_json_raw'] = array();
$_field_data = array();
$_istance_data = array();
foreach ($submittedData as $istance_id => $value) {
if (empty($form_data['fields'][$istance_id])) {
continue;
}
$istance_data = $form_data['fields'][$istance_id];
if (empty($avail_fields[$istance_data['ref']])) {
$fieldset_data = array();
if (!empty($istance_data['ref'])) {
if ($istance_data['ref'] == '__fieldset-begin') {
$field_data = array(
'id' => '__fieldset-begin',
'name' => __('Fieldset begin', 'accua-form-api'),
'type' => 'fieldset-begin',
'description' => '',
);
} else if ($istance_data['ref'] == '__fieldset-end') {
$field_data = array(
'id' => '__fieldset-end',
'name' => __('Fieldset end', 'accua-form-api'),
'type' => 'fieldset-end',
'description' => '',
);
}
}
} else {
$field_data = $avail_fields[$istance_data['ref']];
}
$field_data += array(
'id' => '__html',
'name' => __( 'Custom HTML content', 'accua-form-api'),
'type' => 'html',
'description' => __( 'Use this special field to inject raw HTML in the form. You can use this multiple times.', 'accua-form-api'),
'default_value' => '',
'allowed_values' => '',
);
/*
echo "\n";
*/
$istance_data += array(
'istance_id' => $field_data['id'],
'widget_number' => '',
'ref' => $field_data['id'],
'label' => $field_data['name'],
'default_value' => $field_data['default_value'],
'allowed_values' => $field_data['allowed_values'],
);
switch ($field_data['type']) {
case 'checkbox':
case 'submit':
if (empty($value)) {
$replace_map[$istance_data['istance_id']] = $value = '';
} else {
if (empty($istance_data['default_value'])) {
$replace_map[$istance_data['istance_id']] = 'Checked';
$value = '1';
} else {
$replace_map[$istance_data['istance_id']] = $value = $istance_data['default_value'];
}
}
break;
case 'multiselect':
case 'multicheckbox':
$replace_map[$istance_data['istance_id']] = implode(', ',$value);
$value = implode('|',$value);
break;
case 'post-multicheckbox':
$el = $form->getElementByName($istance_id);
$opts = $el->getOptions();
$value2 = array();
foreach ($value as $val) {
if (isset($opts[$val])) {
$value2[] = $val . ': ' . trim(preg_replace('/[\s\n\r]+/', ' ', $opts[$val]));
}
}
$replace_map[$istance_data['istance_id']] = $value = implode("\n", $value2);
break;
/*
case 'file':
//URL to file, or attach
break;
*/
case 'autoreply_email':
if ($value !== '') {
$replace_map['__autoreply_email_raw'][] = $value;
}
$replace_map[$istance_data['istance_id']] = $value;
break;
case 'file':
//TODO: move temp file to "{$submission_id}_{$field_data['id']}_{$file['name']}"; value is $file['name']
$buildid = $submittedData['_AccuaForm_buildID'];
$file_download_url = '';
$file = $form->getFile($istance_id);
if ($value !== null && $value !== '' && $file) {
if ($form->renameFile($istance_id, "{$submission_id}_{$field_data['id']}_{$file['name']}")) {
$urlfield = rawurlencode($istance_data['istance_id']);
$urlfile = rawurlencode($value);
$file_download_url = admin_url('admin-ajax.php') . "?action=accua_forms_download_submitted_file&subid={$submission_id}&field={$urlfield}&file={$urlfile}";
}
}
$replace_map[$istance_data['istance_id']] = $value;
$replace_map['__download_'.$istance_data['istance_id']] = $file_download_url;
break;
default:
$replace_map[$istance_data['istance_id']] = $value;
}
switch ($field_data['type']) {
case 'file':
$replace_map['__submitted_txt_raw'][$istance_data['istance_id']] = "{$istance_data['istance_id']}\t$value\t$file_download_url";
$replace_map['__submitted_json_raw'][$istance_data['istance_id']] = "$value\t$file_download_url";
$replace_map['__submitted_html_raw'][$istance_data['istance_id']] = "{$istance_data['istance_id']} ".htmlspecialchars($value)." ";
break;
case 'email':
case 'autoreply_email':
$replace_map['__submitted_txt_raw'][$istance_data['istance_id']] = "{$istance_data['istance_id']}\t$value";
$replace_map['__submitted_json_raw'][$istance_data['istance_id']] = $value;
$replace_map['__submitted_html_raw'][$istance_data['istance_id']] = "{$istance_data['istance_id']} ".htmlspecialchars($value)." ";
break;
case 'submit':
break;
default:
$replace_map['__submitted_txt_raw'][$istance_data['istance_id']] = "{$istance_data['istance_id']}\t$value";
$replace_map['__submitted_json_raw'][$istance_data['istance_id']] = $value;
$replace_map['__submitted_html_raw'][$istance_data['istance_id']] = "{$istance_data['istance_id']} ".htmlspecialchars($value);
}
$wpdb->insert(
$wpdb->prefix . 'accua_forms_submissions_values',
array (
'afsv_sub_id' => $submission_id,
'afsv_field_id' => $istance_data['istance_id'],
'afsv_type' => $field_data['type'],
'afsv_value' => $value,
),
array('%d','%s','%s','%s')
);
$_field_data[$istance_data['istance_id']] = $field_data;
$_istance_data[$istance_data['istance_id']] = $istance_data;
}
$replace_map['__autoreply'] = (bool) ($replace_map['__autoreply_email_raw']
&& $form_data['confirmation_emails_subject']
&& $form_data['confirmation_emails_message']);
accua_forms_aggregate_submitted_data($replace_map);
//Older undocumented filter, maintained for backward compatibility. In fact filter accua_forms_form_submission_handler is called before accua_forms_submission, but for the rest they are the same
$replace_map = apply_filters('accua_forms_form_submission_handler', $replace_map, $fid, $submittedData, $form, $_field_data, $_istance_data);
//Newer filter, with an easier name
$replace_map = apply_filters('accua_forms_submission', $replace_map, $fid, $submittedData, $form, $_field_data, $_istance_data);
$replace_map['__submitted_html'] = $submitted_html = '' . $replace_map['__submitted_html'] . '
';
unset($replace_map['__submitted_txt_raw'], $replace_map['__submitted_html_raw'], $replace_map['__submitted_json_raw'], $replace_map['__autoreply_email_raw']);
$replacer = new AccuaConditionalReplacer($replace_map);
$confirmation_emails_message = $replace_map['__confirmation_emails_message'];
unset($replace_map['__submitted_html'], $replace_map['__confirmation_emails_message']);
foreach($replace_map as $key => $value) {
$replace_map[$key] = htmlspecialchars($value, ENT_QUOTES);
}
$replace_map['__submitted_html'] = $submitted_html;
$replacer_html = new AccuaConditionalReplacer($replace_map);
$confirmation_emails_message = $replacer_html->doReplace($confirmation_emails_message);
$replacer_html->appendPattern(array('__confirmation_emails_message' => $confirmation_emails_message));
$form_data_replaced = array();
$settings = array(
'emails_from',
'admin_emails_to',
'emails_bcc',
'admin_emails_subject',
'confirmation_emails_subject',
);
foreach($settings as $i) {
$form_data_replaced[$i] = $replacer->doReplace($form_data[$i]);
}
$settings_html = array(
'success_message',
'admin_emails_message',
);
foreach($settings_html as $i) {
$form_data_replaced[$i] = $replacer_html->doReplace($form_data[$i]);
}
AccuaForm::appendSubmittedMessages(wpautop($form_data_replaced['success_message']));
$header = array("Content-Type: text/html; charset=".get_option('blog_charset'));
if ($form_data_replaced['emails_from']) {
$header[] = 'From: '.$form_data_replaced['emails_from'];
}
if ($form_data_replaced['emails_bcc']) {
$header[] = 'Bcc: '.$form_data_replaced['emails_bcc'];
}
if ($form_data_replaced['admin_emails_to']
&& $form_data_replaced['admin_emails_subject']) {
/*
$admin_tos = explode(',', strtr($form_data_replaced['admin_emails_to'], "\n\t\r;", ',,,,'));
foreach ($admin_tos as $admin_to) {
$mail1 = wp_mail(trim($admin_to), $form_data_replaced['admin_emails_subject'], $form_data_replaced['admin_emails_message'], $header);
}
*/
$mail1 = wp_mail($form_data_replaced['admin_emails_to'], $form_data_replaced['admin_emails_subject'],''.wpautop($form_data_replaced['admin_emails_message']).'', $header);
}
if ($replace_map['__autoreply'] && $replace_map['__autoreply_email']
&& $form_data_replaced['confirmation_emails_subject']
&& $confirmation_emails_message) {
$mail2 = wp_mail($replace_map['__autoreply_email'], $form_data_replaced['confirmation_emails_subject'], ''.wpautop($confirmation_emails_message).'', $header);
}
/*
echo "";
*/
}
}
}
function accua_forms_get_submission_data($subid, $options = array()){
//TODO: Completa e usa per sostituire i campi
global $wpdb;
$subid = (int) $subid;
$options += array(
'extra' => true,
'file_format' => 'name',
);
$ret = array();
if ($options['extra']) {
$query1 = "SELECT *
FROM `{$wpdb->prefix}accua_forms_submissions`
WHERE afs_id = $subid";
$data = $wpdb->get_row($query1);
if (!empty($data)) {
$created = $data->afs_created;
$created[10] = 'T';
$created.='.00+00:00';
$created = strtotime($created);
$submitted = $data->afs_submitted;
$submitted[10] = 'T';
$submitted.='.00+00:00';
$submitted = strtotime($submitted);
$ret += array(
'__fid' => $data->afs_form_id,
'__subid' => $subid,
'__pid' => $data->afs_post_id,
'__ip' => $data->afs_id,
'__uri' => $data->afs_uri,
'__referrer' => $data->afs_referrer,
'__lang' => $data->afs_lang,
'__created' => $created,
'__created_day' => date('l j F Y', $created),
'__created_hour' => date('G:i', $created),
'__submitted' => $submitted,
'__submitted_day' => date('l j F Y', $submitted),
'__submitted_hour' => date('G:i', $submitted),
);
}
}
$query2 = "SELECT *
FROM `{$wpdb->prefix}accua_forms_submissions_values`
WHERE afsv_sub_id = $subid";
$data2 = $wpdb->get_results($query2, OBJECT);
foreach ($data2 as $row) {
switch ($row->afsv_type) {
case 'file' :
if ($options['file_format'] == 'url' || $options['file_format'] == 'link') {
$fieldid = rawurlencode($row->afsv_field_id);
$filename = rawurlencode($row->afsv_value);
$url = admin_url('admin-ajax.php') . "?action=accua_forms_download_submitted_file&subid={$row->afsv_sub_id}&field={$fieldid}&file={$filename}";
if ($options['file_format'] == 'url'){
$url = htmlspecialchars($url,ENT_QUOTES);
$filename = htmlspecialchars($row->afsv_value,ENT_QUOTES);
$fielddata = "{$filename} ";
} else {
$fielddata = $url;
}
} else { // $options['file_format'] == 'name'
$fielddata = $row->afsv_value;
}
break;
default:
$fielddata = $row->afsv_value;
}
$ret[$row->afsv_field_id] = $fielddata;
}
return $ret;
}
add_shortcode( 'accua-form', 'accua_forms_shortcode_handler' );
function accua_forms_shortcode_handler($atts, $content = '', $code = '') {
if (empty($atts['fid'])) {
return '';
}
$fid = $atts['fid'];
$form_data = _accua_forms_get_form_data($fid, false);
if (! $form_data) {
return '';
}
$fid = '__accua-form__'.$fid;
$out = '';
if (AccuaForm::getSubmittedID() == $fid) {
/* return "Form submitted.\n\nData: " . print_r(AccuaForm::getSubmittedData(), true) . ' '; */
$messages = AccuaForm::getSubmittedMessages();
if ($messages) {
$out .= ''.$messages.'
';
}
if (AccuaForm::isValid()) {
return $out;
}
$form = AccuaForm::getSubmittedForm();
} else {
$form = AccuaForm::create($fid, array('layout'=>$form_data['layout']));
}
return $out . $form->render(true);
}
function accua_forms_include($fid, $atts=array(), $content = '', $code = '') {
$atts['fid'] = $fid;
echo accua_forms_shortcode_handler($atts, $content, $code);
}
function accua_forms_submissions_list_page_head(){
require_once('accua-forms-submissions-page.php');
accua_forms_submissions_list_page(true);
}
add_action('wp_ajax_accua_forms_download_submitted_file', 'accua_forms_download_submitted_file');
add_action('wp_ajax_nopriv_accua_forms_download_submitted_file', 'accua_forms_download_submitted_file');
function accua_forms_download_submitted_file(){
$get = stripslashes_deep($_GET);
if (isset($get['subid'],$get['field'],$get['file'])) {
global $wpdb;
$subid = (int) $get['subid'];
$field = $get['field'];
$file = $get['file'];
$query = "SELECT *
FROM `{$wpdb->prefix}accua_forms_submissions_values`
WHERE afsv_sub_id = %d
AND afsv_field_id = %s
AND afsv_value = %s
";
$query = $wpdb->prepare($query, $subid, $field, $file);
$subval = $wpdb->get_results($query, OBJECT);
if ($subval) {
$file_data = get_option('accua_forms_default_file_field_data',array()) + array('dest_path' => '');
$dest_path = _accua_forms_get_abs_dest_path($file_data['dest_path']);
$filename = "{$dest_path}/{$subid}_{$field}_{$file}";
if (is_file($filename) && is_readable($filename)){
if (function_exists('finfo_open')){
@ $finfo = finfo_open(FILEINFO_MIME);
if ($finfo) {
@ $filetype = finfo_file($finfo, $filename);
@ finfo_close($finfo);
}
}
if (empty($filetype) && function_exists('mime_content_type')){
@ $filetype = mime_content_type($filename);
}
if (empty($filetype)) {
$filetype = "application/octet-stream";
}
header("Content-type: $filetype");
header("Content-length: ".filesize($filename));
header("Content-disposition: attachment; filename=\"$file\"");
readfile($filename);
die('');
}
}
}
header("HTTP/1.0 404 Not Found");
//header("Status: 404 Not Found");
die('File not found');
}
function accua_forms_buildConditionalReplacer($map = array()) {
if (!class_exists('AccuaConditionalReplacer')){
require_once('AccuaConditionalReplacer.php');
}
return new AccuaConditionalReplacer($map);
}
add_action('wp_ajax_accua_forms_preview', 'accua_forms_preview');
function accua_forms_preview() {
if (!current_user_can(10)){
die ('');
}
wp_enqueue_script('jquery');
echo '';
wp_print_styles();
wp_print_head_scripts();
echo '';
echo accua_forms_shortcode_handler(array('fid'=>$_REQUEST['fid']));
wp_print_footer_scripts();
echo '';
die('');
}
//salvataggio file excel
add_action('wp_ajax_accua_forms_submission_page_save_excel', 'accua_forms_submission_page_save_excel');
//add_action('wp_ajax_nopriv_accua_forms_submission_page_save_excel', 'accua_forms_submission_page_save_excel');
function accua_forms_submission_page_save_excel() {
require_once('accua-forms-submissions-page.php');
$listTable = new Accua_Forms_Submissions_List_Table();
$listTable->prepare_items(true);
$show_col = explode( ',', $_GET['accua_show_field']);
accua_forms_submission_page_save_excel_general($listTable,$show_col,'');
die('');
}
function accua_forms_submission_page_save_excel_general(Accua_Forms_Submissions_List_Table $listTable,array $show_col,$file_name='') {
if (!current_user_can(10)){
header("HTTP/1.0 401 Access Denied");
//header("Status: 401 Access Denied");
die('You are not authorized to access this page.');
}
global $wpdb;
//creo il file excel
header("Content-disposition: attachment; filename=downloads-report".$file_name.".xls");
header("Content-type: application/vnd.ms-excel");
?>
get_columns();
foreach($cols as $col_key=>$col_value) {
if(in_array($col_key, $show_col)) { ?>
date;
$ut_date[10] = 'T';
$ut_date.='.00+00:00';
$excel_date = (strtotime($ut_date) / 86400 + 25569);
$parts_date = explode('-', substr($result->date, 0, 10));
$date = "{$parts_date[2]}/{$parts_date[1]}/{$parts_date[0]}";
echo "$date \n";
*/
?>
items as $id_submission=>$single_submission) {
echo "";
foreach($cols as $col_key=>$col_value) {
if(in_array($col_key, $show_col)) {
echo "";
if(isset($single_submission[$col_key])) {
if ( method_exists( $this, 'column_' . $column_name ) ) {
echo call_user_func( array( &$listTable, 'column_' . $col_key ), $single_submission );
}
else {
echo $listTable->column_default( $single_submission, $col_key );
}
}
echo " ";
}
}
echo " ";
}
?>
$value) {
$tokens .= $value['name'] . ": {" . $key . "}\n";
if ($value['type'] == 'file') {
$tokens .= $value['name'] . " (download link): {__download_" . $key . "}\n";
}
}
echo <<
Tokens
Fields
These tokens are available only if the field is added to the form
$tokens
Generic tokens
{__fid}
{__subid}
{__pid}
{__ip}
{__uri}
{__url}
{__referrer}
{__lang}
{__locale}
{__created}
{__created_day}
{__created_day_month_year}
{__created_hour}
{__submitted}
{__submitted_day}
{__submitted_day_month_year}
{__submitted_hour}
{__user_agent}
{__platform}
{__tentatives}
{__submit_method}
{__submitted_txt}
{__submitted_html}
{__submitted_json}
{__autoreply}
{__autoreply_email}
{__confirmation_emails_message}
EOT;
do_action('accua_forms_print_tokens');
}
function &accua_get_pages($args = '') {
global $wpdb;
$defaults = array(
'child_of' => 0, 'sort_order' => 'ASC',
'sort_column' => 'post_title', 'hierarchical' => 1,
'exclude' => array(), 'include' => array(),
'meta_key' => '', 'meta_value' => '',
'authors' => '', 'parent' => -1, 'exclude_tree' => '',
'number' => '', 'offset' => 0,
'post_type' => 'page', 'post_status' => 'publish',
);
$r = wp_parse_args( $args, $defaults );
extract( $r, EXTR_SKIP );
$number = (int) $number;
$offset = (int) $offset;
/*
// Make sure the post type is hierarchical
$hierarchical_post_types = get_post_types( array( 'hierarchical' => true ) );
if ( !in_array( $post_type, $hierarchical_post_types ) )
return false;
*/
// Make sure we have a valid post type
if ( !is_array( $post_type ) )
$post_type = explode( ',', $post_type );
if ( array_diff( $post_type, get_post_types() ) )
return false;
// Make sure we have a valid post status
if ( !is_array( $post_status ) )
$post_status = explode( ',', $post_status );
if ( array_diff( $post_status, get_post_stati() ) )
return false;
/*
$cache = array();
$key = md5( serialize( compact(array_keys($defaults)) ) );
if ( $cache = wp_cache_get( 'get_pages', 'posts' ) ) {
if ( is_array($cache) && isset( $cache[ $key ] ) ) {
$pages = apply_filters('get_pages', $cache[ $key ], $r );
return $pages;
}
}
if ( !is_array($cache) )
$cache = array();
*/
$inclusions = '';
if ( !empty($include) ) {
$child_of = 0; //ignore child_of, parent, exclude, meta_key, and meta_value params if using include
$parent = -1;
$exclude = '';
$meta_key = '';
$meta_value = '';
$hierarchical = false;
$incpages = wp_parse_id_list( $include );
if ( ! empty( $incpages ) ) {
foreach ( $incpages as $incpage ) {
if (empty($inclusions))
$inclusions = $wpdb->prepare(' AND ( ID = %d ', $incpage);
else
$inclusions .= $wpdb->prepare(' OR ID = %d ', $incpage);
}
}
}
if (!empty($inclusions))
$inclusions .= ')';
$exclusions = '';
if ( !empty($exclude) ) {
$expages = wp_parse_id_list( $exclude );
if ( ! empty( $expages ) ) {
foreach ( $expages as $expage ) {
if (empty($exclusions))
$exclusions = $wpdb->prepare(' AND ( ID <> %d ', $expage);
else
$exclusions .= $wpdb->prepare(' AND ID <> %d ', $expage);
}
}
}
if (!empty($exclusions))
$exclusions .= ')';
$author_query = '';
if (!empty($authors)) {
$post_authors = preg_split('/[\s,]+/',$authors);
if ( ! empty( $post_authors ) ) {
foreach ( $post_authors as $post_author ) {
//Do we have an author id or an author login?
if ( 0 == intval($post_author) ) {
$post_author = get_user_by('login', $post_author);
if ( empty($post_author) )
continue;
if ( empty($post_author->ID) )
continue;
$post_author = $post_author->ID;
}
if ( '' == $author_query )
$author_query = $wpdb->prepare(' post_author = %d ', $post_author);
else
$author_query .= $wpdb->prepare(' OR post_author = %d ', $post_author);
}
if ( '' != $author_query )
$author_query = " AND ($author_query)";
}
}
$join = '';
$where = "$exclusions $inclusions ";
if ( ! empty( $meta_key ) || ! empty( $meta_value ) ) {
$join = " LEFT JOIN $wpdb->postmeta ON ( $wpdb->posts.ID = $wpdb->postmeta.post_id )";
// meta_key and meta_value might be slashed
$meta_key = stripslashes($meta_key);
$meta_value = stripslashes($meta_value);
if ( ! empty( $meta_key ) )
$where .= $wpdb->prepare(" AND $wpdb->postmeta.meta_key = %s", $meta_key);
if ( ! empty( $meta_value ) )
$where .= $wpdb->prepare(" AND $wpdb->postmeta.meta_value = %s", $meta_value);
}
if ( $parent >= 0 )
$where .= $wpdb->prepare(' AND post_parent = %d ', $parent);
if ( 1 == count ( $post_type ) ) {
$where_post_type = $wpdb->prepare( "post_type = %s", array_shift( $post_type ) );
} else {
$post_type = implode( "', '", $post_type );
$where_post_type = "post_type IN ('$post_type')";
}
if ( 1 == count( $post_status ) ) {
$where_post_type .= $wpdb->prepare( " AND post_status = %s", array_shift( $post_status ) );
} else {
$post_status = implode( "', '", $post_status );
$where_post_type .= " AND post_status IN ('$post_status')";
}
$orderby_array = array();
$allowed_keys = array('author', 'post_author', 'date', 'post_date', 'title', 'post_title', 'name', 'post_name', 'modified',
'post_modified', 'modified_gmt', 'post_modified_gmt', 'menu_order', 'parent', 'post_parent',
'ID', 'rand', 'comment_count');
foreach ( explode( ',', $sort_column ) as $orderby ) {
$orderby = trim( $orderby );
if ( !in_array( $orderby, $allowed_keys ) )
continue;
switch ( $orderby ) {
case 'menu_order':
break;
case 'ID':
$orderby = "$wpdb->posts.ID";
break;
case 'rand':
$orderby = 'RAND()';
break;
case 'comment_count':
$orderby = "$wpdb->posts.comment_count";
break;
default:
if ( 0 === strpos( $orderby, 'post_' ) )
$orderby = "$wpdb->posts." . $orderby;
else
$orderby = "$wpdb->posts.post_" . $orderby;
}
$orderby_array[] = $orderby;
}
$sort_column = ! empty( $orderby_array ) ? implode( ',', $orderby_array ) : "$wpdb->posts.post_title";
$sort_order = strtoupper( $sort_order );
if ( '' !== $sort_order && !in_array( $sort_order, array( 'ASC', 'DESC' ) ) )
$sort_order = 'ASC';
$query = "SELECT * FROM $wpdb->posts $join WHERE ($where_post_type) $where ";
$query .= $author_query;
$query .= " ORDER BY " . $sort_column . " " . $sort_order ;
if ( !empty($number) )
$query .= ' LIMIT ' . $offset . ',' . $number;
//echo "";
$pages = $wpdb->get_results($query);
if ( empty($pages) ) {
$pages = apply_filters('get_pages', array(), $r);
return $pages;
}
// Sanitize before caching so it'll only get done once
$num_pages = count($pages);
for ($i = 0; $i < $num_pages; $i++) {
$pages[$i] = sanitize_post($pages[$i], 'raw');
}
/*
// Update cache.
update_post_cache( $pages );
*/
if ( $child_of || $hierarchical )
$pages = & get_page_children($child_of, $pages);
if ( !empty($exclude_tree) ) {
$exclude = (int) $exclude_tree;
$children = get_page_children($exclude, $pages);
$excludes = array();
foreach ( $children as $child )
$excludes[] = $child->ID;
$excludes[] = $exclude;
$num_pages = count($pages);
for ( $i = 0; $i < $num_pages; $i++ ) {
if ( in_array($pages[$i]->ID, $excludes) )
unset($pages[$i]);
}
}
/*
$cache[ $key ] = $pages;
wp_cache_set( 'get_pages', $cache, 'posts' );
*/
$pages = apply_filters('get_pages', $pages, $r);
return $pages;
}