Pods::prev_id PHP Method

prev_id() public method

Return the previous item ID, loops at the last id to return the first
Since: 2.0
public prev_id ( integer $id = null, array $params_override = null ) : integer
$id integer
$params_override array
return integer
    public function prev_id($id = null, $params_override = null)
    {
        if (null === $id) {
            $id = $this->id();
        }
        $id = (int) $id;
        $params = array('select' => "`t`.`{$this->data->field_id}`", 'where' => "`t`.`{$this->data->field_id}` < {$id}", 'orderby' => "`t`.`{$this->data->field_id}` DESC", 'limit' => 1);
        if (!empty($params_override) || !empty($this->params)) {
            if (!empty($params_override)) {
                $params = $params_override;
            } elseif (!empty($this->params)) {
                $params = $this->params;
            }
            if (is_object($params)) {
                $params = get_object_vars($params);
            }
            if (0 < $id) {
                if (isset($params['where']) && !empty($params['where'])) {
                    $params['where'] = (array) $params['where'];
                    $params['where'][] = "`t`.`{$this->data->field_id}` < {$id}";
                } else {
                    $params['where'] = "`t`.`{$this->data->field_id}` < {$id}";
                }
            } elseif (isset($params['offset']) && 0 < $params['offset']) {
                $params['offset'] -= 1;
            } elseif (!isset($params['offset']) && !empty($this->params) && 0 < $this->row_number) {
                $params['offset'] = $this->row_number - 1;
            } else {
                return 0;
            }
            if (isset($params['orderby']) && !empty($params['orderby'])) {
                if (is_array($params['orderby'])) {
                    foreach ($params['orderby'] as $orderby => $dir) {
                        $dir = strtoupper($dir);
                        if (!in_array($dir, array('ASC', 'DESC'))) {
                            continue;
                        }
                        if ('ASC' == $dir) {
                            $params['orderby'][$orderby] = 'DESC';
                        } else {
                            $params['orderby'][$orderby] = 'ASC';
                        }
                    }
                    $params['orderby'][$this->data->field_id] = 'DESC';
                } elseif ("`t`.`{$this->data->field_id}` DESC" != $params['orderby']) {
                    $params['orderby'] .= ", `t`.`{$this->data->field_id}` DESC";
                }
            }
            $params['select'] = "`t`.`{$this->data->field_id}`";
            $params['limit'] = 1;
        }
        $pod = pods($this->pod, $params);
        $new_id = 0;
        if ($pod->fetch()) {
            $new_id = $pod->id();
        }
        $new_id = $this->do_hook('prev_id', $new_id, $id, $pod, $params_override);
        return $new_id;
    }