public function get_raw($post = false, $Item = false)
 {
     // PerchUtil::debug($this->unique_id);
     // PerchUtil::debug($this->required_id);
     $id = $this->Tag->id();
     $out = array();
     if (isset($post[$id . '_title']) && trim($post[$id . '_title']) !== '') {
         $title = PerchUtil::safe_stripslashes(trim($post[$id . '_title']));
         $out['title'] = $title;
     } else {
         $out['title'] = '';
     }
     $out['_title'] = $out['title'];
     if (isset($post[$id . '_is3d']) && trim($post[$id . '_is3d']) !== '') {
         $out['is3d'] = $post[$id . '_is3d'];
     } else {
         $out['is3d'] = false;
     }
     $width = $this->Tag->width() === false ? "460" : $this->Tag->width();
     $out['width'] = $width;
     $height = $this->Tag->height() === false ? "320" : $this->Tag->height();
     $out['height'] = $height;
     if (isset($post[$id . '_data']) && trim($post[$id . '_data']) !== '') {
         $out['data'] = $post[$id . '_data'];
     } else {
         $out['data'] = '[]';
     }
     $out['chart_id'] = $this->unique_id . $this->required_id;
     return $out;
 }
 public function populate($formID, $templatePath, $data, $files, $timestamp = false)
 {
     $this->formID = $formID;
     $this->id = $formID;
     $this->templatePath = $templatePath;
     $this->timestamp = $timestamp;
     if (PerchUtil::count($data)) {
         foreach ($data as &$datum) {
             $datum = PerchUtil::safe_stripslashes($datum);
         }
     }
     $this->data = $data;
     $this->files = $files;
 }
 public function pdb($value)
 {
     // Stripslashes
     if (get_magic_quotes_runtime()) {
         $value = PerchUtil::safe_stripslashes($value);
     }
     $link = $this->get_link();
     if (!$link) {
         return false;
     }
     // Quote
     switch (gettype($value)) {
         case 'integer':
         case 'double':
             $escape = $value;
             break;
         case 'string':
             $escape = $link->quote($value);
             break;
         case 'NULL':
             $escape = 'NULL';
             break;
         default:
             $escape = $link->quote($value);
     }
     return $escape;
 }
 private function value($value)
 {
     if ($this->force_clear) {
         return '';
     }
     if (is_array($value)) {
         return $value;
     }
     return PerchUtil::safe_stripslashes($value);
 }
 public function get_posted_content($Template, $Factory, $Item = false, $include_repeaters = true, $json_encode = true)
 {
     $data = array();
     $prev = false;
     if ($Item) {
         $prev = $Item->to_array();
     }
     $dynamic_fields = $this->receive_from_template_fields($Template, $prev, $Factory, $Item, true, false);
     $static_fields = array();
     // fetch out static fields
     foreach ($Factory->static_fields as $field) {
         if (array_key_exists($field, $dynamic_fields)) {
             //($dynamic_fields[$field])) {
             if (is_array($dynamic_fields[$field])) {
                 if (isset($dynamic_fields[$field]['_default'])) {
                     $data[$field] = trim($dynamic_fields[$field]['_default']);
                 }
                 if (isset($dynamic_fields[$field]['processed'])) {
                     $data[$field] = trim($dynamic_fields[$field]['processed']);
                 }
             }
             if (!isset($data[$field])) {
                 $data[$field] = $dynamic_fields[$field];
             }
             unset($dynamic_fields[$field]);
         } else {
             if (isset($_POST[$field])) {
                 if (!is_array($_POST[$field])) {
                     $data[$field] = trim(PerchUtil::safe_stripslashes($_POST[$field]));
                 } else {
                     $data[$field] = $_POST[$field];
                 }
             }
         }
     }
     if (!$json_encode) {
         return $dynamic_fields;
     }
     $data[$Factory->dynamic_fields_column] = PerchUtil::json_safe_encode($dynamic_fields);
     return $data;
 }
 /**
  * Get raw value
  *
  * @return void
  * @author Drew McLellan
  */
 public function get_raw($post = false, $Item = false)
 {
     if ($post === false) {
         $post = $_POST;
     }
     $id = $this->Tag->id();
     if (isset($post[$id])) {
         $this->raw_item = trim(PerchUtil::safe_stripslashes($post[$id]));
         return $this->raw_item;
     }
     return null;
 }
 public function get_raw($post = false, $Item = false)
 {
     if ($post === false) {
         $post = $_POST;
     }
     $id = $this->Tag->id();
     if (isset($post[$id])) {
         $raw = trim($post[$id]);
         $flang = 'plain';
         if ($this->Tag->html()) {
             $flang = 'html';
         }
         $value = PerchUtil::safe_stripslashes($raw);
         // Strip HTML by default
         if (!is_array($value) && PerchUtil::bool_val($this->Tag->html()) == false) {
             $value = PerchUtil::html($value);
             $value = strip_tags($value);
         }
         $Markdown = new PerchParsedown();
         $value = $Markdown->smartypants($value);
         $flang = 'smartypants';
         $store = array('_flang' => $flang, 'raw' => $raw, 'processed' => $value);
         $this->raw_item = $store;
         return $this->raw_item;
     }
     return null;
 }
 public static function read_items_from_post($Item, $tags, $subprefix, $form_vars, $postitems, $Form, $search_text, $options, $Resources, $in_repeater = false, $Template, $in_block = false)
 {
     //PerchUtil::mark('reading items from post'. ($in_block ? ' (in block)': ''));
     $given_subprefix = $subprefix;
     $seen_tags = array();
     if ($Item->itemID()) {
         $perch_prefix = 'perch_' . $Item->itemID();
         $item_prefix = $Item->itemID() . '_';
     } else {
         $perch_prefix = 'perch';
         $item_prefix = '';
     }
     // Top level - see notes below.
     $top_level = true;
     if ($in_repeater) {
         $top_level = false;
     }
     $deleted_blocks = array();
     if (isset($_POST['_blocks_deleted']) && PerchUtil::count($_POST['_blocks_deleted'])) {
         $deleted_blocks = $_POST['_blocks_deleted'];
         #PerchUtil::debug('Deleted blocks:');
         #PerchUtil::debug($deleted_blocks);
     } else {
         #PerchUtil::debug('No deleted blocks');
     }
     //PerchUtil::debug($tags, 'success');
     foreach ($tags as $Tag) {
         if (!in_array($Tag->id(), $seen_tags)) {
             //PerchUtil::debug($Tag->id(). ': '.$Tag->type(), 'notice');
             //PerchUtil::debug(($in_block ? 'In block' : 'Not in block'), 'notice');
             //PerchUtil::debug(($in_repeater ? 'In repeater' : 'Not in repeater'), 'notice');
             //PerchUtil::debug('subprefix: '.$subprefix);
             if ($Tag->type() == 'PerchRepeater' || $Tag->type() == 'PerchBlocks') {
                 // Make sure prefixes work for 3 situations:
                 // 	1) blocks and repeaters in API
                 // 	2) repeaters at top level
                 // 	3) repeaters in blocks
                 if ($Tag->type() == 'PerchRepeater' && !$Item->itemID() && $top_level) {
                     $perch_prefix = 'perch_';
                 } else {
                     if ($Item->itemID()) {
                         $perch_prefix = 'perch_' . $Item->itemID();
                     } else {
                         $perch_prefix = 'perch';
                     }
                 }
                 //PerchUtil::debug('Reading: '.$Tag->id());
                 $new_form_vars = array();
                 $i = 0;
                 $minor_prefix = $i . '_';
                 if ($Tag->type() == 'PerchBlocks') {
                     $subprefix .= '_blocks_';
                 } else {
                     if ($in_repeater && $in_block) {
                         $subprefix .= '_' . $Tag->id() . '_';
                     } else {
                         $subprefix .= $Tag->id() . '_';
                     }
                 }
                 //PerchUtil::debug('Looking for  '.$item_prefix.$subprefix.$i.' in deleted blocks list');
                 //while (in_array($Item->itemID().'_'.$subprefix.$i, $deleted_blocks)) {
                 while (in_array($item_prefix . $subprefix . $i, $deleted_blocks)) {
                     //PerchUtil::debug('Skipping '.$item_prefix.$subprefix.$i.' as deleted');
                     $i++;
                 }
                 $new_postitems = $Form->find_items($perch_prefix . '_' . $subprefix . $i . '_');
                 //PerchUtil::debug('Subprefix: ' . $subprefix);
                 //PerchUtil::debug('*Looking for: '.$perch_prefix.'_'.$subprefix.$i.'_'. ' '. ($in_repeater ? '(in repeater)':''));
                 //PerchUtil::debug($new_postitems);
                 while (PerchUtil::count($new_postitems)) {
                     if ($Tag->type() == 'PerchBlocks') {
                         $item_tags = array();
                         if (isset($new_postitems['_block_type'])) {
                             $item_tags = $Template->get_block_tags($new_postitems['_block_type']);
                             $item_tags[] = new PerchXMLTag('<perch:' . $Template->namespace . ' id="_block_type" value="' . $new_postitems['_block_type'] . '" type="editcontrol" />');
                             $item_tags[] = new PerchXMLTag('<perch:' . $Template->namespace . ' id="_block_id" value="' . $new_postitems['_block_id'] . '" type="editcontrol" />');
                             $item_tags[] = new PerchXMLTag('<perch:' . $Template->namespace . ' id="_block_index" value="' . $new_postitems['_block_index'] . '" type="editcontrol" />');
                         }
                         $as_in_block = true;
                     } else {
                         $item_tags = $Tag->tags;
                         $as_in_block = false;
                     }
                     list($result, $search_text) = self::read_items_from_post($Item, $item_tags, $subprefix . $i, $new_form_vars, $new_postitems, $Form, $search_text, $options, $Resources, true, $Template, $as_in_block);
                     //PerchUtil::debug($result, 'notice');
                     if (strlen(self::multi_implode($result)) > 0) {
                         $form_vars[$Tag->id()][] = $result;
                     }
                     $i++;
                     while (in_array($item_prefix . $subprefix . $i, $deleted_blocks)) {
                         PerchUtil::debug('Skipping ' . $Item->itemID() . '_' . $subprefix . $i . ' as deleted (2)');
                         $i++;
                     }
                     $new_postitems = $Form->find_items($perch_prefix . '_' . $subprefix . $i . '_');
                     //PerchUtil::debug('Looking for: '.$perch_prefix.$subprefix.'_'.$i.'_');
                     //PerchUtil::debug($new_postitems);
                     //if (!PerchUtil::count($new_postitems)) {
                     //PerchUtil::debug('Not found: '.$perch_prefix.'_'.$subprefix.$i.'_', 'error');
                     //}
                 }
                 // if ($Tag->id()=='_blocks' && isset($form_vars[$Tag->id()])) {
                 // 	$form_vars[$Tag->id()] = PerchUtil::array_sort($form_vars[$Tag->id()], '_block_index');
                 // }
                 if ($in_block) {
                     $subprefix = $given_subprefix;
                 } else {
                     $subprefix = '';
                 }
             } else {
                 if ($subprefix) {
                     $field_prefix = $perch_prefix . '_' . $subprefix . '_' . $Tag->id();
                 } else {
                     $field_prefix = $perch_prefix . '_' . $Tag->id();
                 }
                 //PerchUtil::debug('Form looking for field prefix: '.$field_prefix);
                 if ($in_repeater) {
                     $Tag->set('in_repeater', true);
                     $Tag->set('tag_context', $subprefix . '_' . $Tag->id());
                     if (isset($_POST[$perch_prefix . '_' . $subprefix . '_prevpos'])) {
                         $parts = explode('_', $subprefix);
                         array_pop($parts);
                         $parts[] = (int) $_POST[$perch_prefix . '_' . $subprefix . '_prevpos'];
                         if (isset($_POST[$perch_prefix . '_' . $subprefix . '_present'])) {
                             $Tag->set('tag_context', implode('_', $parts) . '_' . $Tag->id());
                         } else {
                             $Tag->set('tag_context', false);
                         }
                     } else {
                         $Tag->set('tag_context', false);
                     }
                 }
                 $var = false;
                 $Tag->set('input_id', $field_prefix);
                 $FieldType = PerchFieldTypes::get($Tag->type(), $Form, $Tag, $tags, $Form->app_id);
                 $FieldType->set_unique_id($Item->id());
                 $var = $FieldType->get_raw($postitems, $Item);
                 if ($Tag->searchable(true)) {
                     //PerchUtil::debug('Getting search text for: '.$Tag->id().' ('.$Tag->type().')');
                     $search_text .= $FieldType->get_search_text($var) . ' ';
                     //PerchUtil::debug($FieldType->get_search_text($var));
                 }
                 if ($var || is_string($var) && strlen($var)) {
                     if (!is_array($var)) {
                         $var = PerchUtil::safe_stripslashes($var);
                     }
                     $form_vars[$Tag->id()] = $var;
                     // title
                     $form_vars = self::determine_title($Tag, $var, $options, $form_vars);
                 } else {
                     // Store empty values for valid fields
                     if ($Tag->is_set('type') && $Tag->type() != 'hidden' && substr($Tag->id(), 0, 1) != '_') {
                         //PerchUtil::debug('Empty '.$Tag->id(), 'error');
                         $form_vars[$Tag->id()] = null;
                     }
                 }
                 // Resources
                 #if ($Item->ready_to_log_resources()) {
                 #	$resourceIDs = $Resources->get_logged_ids();
                 #	if (PerchUtil::count($resourceIDs)) {
                 #	    $Item->log_resources($resourceIDs);
                 #	}
                 #}
             }
             $seen_tags[] = $Tag->id();
         }
     }
     // Resources
     if (!$in_repeater && !$in_block && $Item->ready_to_log_resources()) {
         $resourceIDs = $Resources->get_logged_ids();
         if (PerchUtil::count($resourceIDs)) {
             $Item->log_resources($resourceIDs);
         }
     }
     return array($form_vars, $search_text);
 }