public function get_tree_species($current_page = 0, $filters, $sort = null) { if ($current_page == 0) { $current_page = $this->current_page; } else { $this->current_page = $current_page; } $where = ''; $filters = $this->check_filters($filters); if ($filters) { $where = $this->get_where('p', $filters); } //p is the table name in this query //use the ForestDbQuery get_default_sort() to create an empty sort $sort = $this->check_sort($sort); if ($sort) { $sort = $sort->sort_col_id . ' ' . $sort->sort_dir; } else { $sort = 'post_title ASC'; } $limit = ' LIMIT ' . $this->item_per_page . ' OFFSET ' . ($current_page - 1) * $this->item_per_page; $sql = "SELECT SQL_CALC_FOUND_ROWS p.ID, p.post_title\n\t \tFROM " . $this->table_name . ' p' . " WHERE p.post_status = 'publish' AND p.post_type='" . $this->tree_species_type . '\'' . $where . " ORDER BY " . $sort . $limit; ForestHelperSingleton::get_instance()->write_log($sql); $this->items = $this->select($sql); //get posts $this->rows_found = $this->get_var('SELECT FOUND_ROWS()'); //get over all rows(pagination) $this->max_num_pages = ceil($this->rows_found / $this->item_per_page); //calc overall number of pages(pagination) return $this->formatted_items('tree-selection'); }
public function default_map_location() { //using an stdClass to be compatible with the db extraction method $defaults = new stdClass(); $defaults->address = ''; $defaults->lat = FOREST_LAT_DEFAULT; $defaults->lng = FOREST_LNG_DEFAULT; $location = self::get_default_option('forest_map_default_location', $defaults); try { //if we got a string representation from the db {"":,""} turn to php array if (!is_object($location)) { $location = json_decode($location); } } catch (Exception $e) { $location = null; ForestHelperSingleton::get_instance()->write_log('Error reading location option. Exception: ' . $e->getMessage()); } return $location; }
/** * Generate a where clause from the given arguments. * @param $post_types * @param $search_term * * @return string */ protected function get_where($table_name, $filters) { $where = ' AND 1=1 '; if (is_array($filters)) { //check if an array, not empty and does not include empty strings. foreach ($filters as $filter) { if (!empty($filter['field_id']) && !empty($filter['value'])) { $where .= 'AND ' . $table_name . '.' . $filter['field_id'] . ' LIKE \'%' . esc_sql($filter['value']) . '%\' '; } else { ForestHelperSingleton::get_instance()->write_log(sprintf('Empty filter: The field_id or value were missing - function %s got fieldId:"%s" and value:"%s"', __FUNCTION__, $filter['field_id'], $filter['value'])); } } } return $where; }
public function tree_species_save_meta_box() { global $post; ?> <div class="publish"> <div id="minor-publishing"> <div class="form-inline"> <div class="form-group"> <label for="tree-lock" data-toggle="tooltip" data-placement="left" title="<?php _etts('Lock the tree card so only the owner can make changes'); ?> " class="changecolor"> <?php ForestHelperSingleton::get_instance()->post_lock_icon($post->post_status); ?> <?php _etts('Locked'); ?> : </label> <?php ForestHelperSingleton::get_instance()->toogle_button('btn-success', 'btn-danger', $post->post_status == 'publish' ? false : true, 'post-lock-btn'); ForestHelperSingleton::get_instance()->hidden_field('post_title', $post->post_title, array('data-id' => 'post_title')); ForestHelperSingleton::get_instance()->hidden_field('post_status', $post->post_status, array('data-id' => 'post_status')); ?> </div> </div> <div class="format-setting-label"></div> <label for="visibility" data-toggle="tooltip" data-placement="left" title="<?php _etts('Change visibility level'); ?> " class="changecolor"><i class="fa fa-eye text-danger"></i><?php _etts('Visibility:'); ?> </label> <div class="form-inline"> <div class="visibility-radio"> <?php ForestHelperSingleton::get_instance()->hidden_field('post_visibility', 'public', array('data-meta-id' => 'post_visibility')); ?> <label class="radio-inline"> <input type="radio" name="lock-option" value="public" checked="checked"><?php _etts('Public'); ?> </label> <label class="radio-inline"> <input type="radio" name="lock-option" value="contributors"><?php _etts('Contributors'); ?> </label> <label class="radio-inline"> <input type="radio" name="lock-option" value="editors"><?php _etts('Editors'); ?> </label> </div> </div> <div class="format-setting-label"></div> </div> <div id="major-publishing-actions"> <div id="delete-action"> <a class="submitdelete deletion" href="<?php echo get_delete_post_link($post->ID); ?> ">Move to Trash</a> </div> <div id="publishing-action"> <span class="spinner"></span> <button id="save-btn" data-action="save" class="btn btn-primary btn-sm" type="button"><?php _etts('Save'); ?> </button> </div> <div class="clear"></div> </div> </div> <?php }
/** * Create an object or array from a json string. If an error is detected * false is returned and the error is logged if debug logging is enabled. * * @param $string string a jason string to be converted. * * @return array|mixed|object */ public function json_decode($string) { //js adds escape slashes which php json_decode do not like one bit $obj = json_decode(stripslashes($string)); if (json_last_error() !== JSON_ERROR_NONE) { ForestHelperSingleton::get_instance()->write_log(sprintf('Error decoding jason string %s. The jason error message was:%s', $string, json_last_error_msg())); } return $obj; }
/** * Get a post data from the database. * @param bool $only_published * * @return bool */ private function fetch_plan_from_db($only_published = false) { global $wpdb; if ($this->plan_id <= 0) { throw new Exception('Error: Plan id has not been set.'); } if ($only_published) { $where = 'p.ID=' . $this->plan_id . ' AND p.post_status="publish"'; } else { $where = 'p.ID=' . $this->plan_id; } $sql = "SELECT SQL_CALC_FOUND_ROWS *\n\t \tFROM " . $wpdb->prefix . "posts p " . "WHERE " . $where; ForestHelperSingleton::get_instance()->write_log($sql); $this->plan = $this->select($sql); //get posts if (is_array($this->plan)) { $this->plan = $this->plan[0]; } $this->rows_found = 1; $this->format_plan(); $this->plan->meta = $this->get_plan_meta(); return $this->plan; }
<div class="col-sm-4 less-padding"> <span class="help-block"><?php _etfm('the owner of this plan'); ?> </span> </div> </div> <div class="form-group"> <label for="locked" class="col-sm-2 control-label"><?php _etfm('Locked'); ?> </label> <div class="col-sm-6 less-padding"> <?php ForestHelperSingleton::get_instance()->toogle_button('btn-success', 'btn-danger', true); ?> </div> <div class="col-sm-4 less-padding"> <span class="help-block"><?php _etfm('if not locked other managers can edit this plan'); ?> </span> </div> </div> </div> </div> </div> </div> </div> <div class="tab-pane" id="data">