Airship\Cabin\Bridge\Blueprint\Blog::updateSeries PHP Method

updateSeries() public method

Insert/delete/rearrange the contents of a series.
public updateSeries ( integer $seriesId, array $oldItems, array $post ) : boolean
$seriesId integer
$oldItems array
$post array
return boolean
    public function updateSeries(int $seriesId, array $oldItems, array $post) : bool
    {
        $this->db->beginTransaction();
        $newItems = \explode(',', $post['items']);
        $inserts = \array_diff($newItems, $oldItems);
        $deletes = \array_diff($oldItems, $newItems);
        foreach ($deletes as $del) {
            list($type, $itemid) = \explode('_', $del);
            switch ($type) {
                case 'series':
                    $this->db->delete('hull_blog_series_items', ['parent' => $seriesId, 'series' => $itemid]);
                    break;
                case 'blogpost':
                    $this->db->delete('hull_blog_series_items', ['parent' => $seriesId, 'post' => $itemid]);
                    break;
            }
        }
        $updates = ['name' => $post['name'], 'preamble' => $post['preamble'] ?? '', 'format' => $post['format'] ?? 'HTML', 'config' => $post['config'] ? \json_encode($post['config']) : '[]'];
        if (!empty($post['author'])) {
            $updates['author'] = $post['author'];
        }
        $this->db->update('hull_blog_series', $updates, ['seriesid' => $seriesId]);
        $listOrder = 0;
        foreach ($newItems as $new) {
            if (\strpos($new, '_') === false) {
                continue;
            }
            list($type, $itemId) = \explode('_', $new);
            if (\in_array($new, $inserts)) {
                switch ($type) {
                    case 'series':
                        $this->db->insert('hull_blog_series_items', ['parent' => $seriesId, 'series' => $itemId, 'listorder' => ++$listOrder]);
                        break;
                    case 'blogpost':
                        $this->db->insert('hull_blog_series_items', ['parent' => $seriesId, 'post' => $itemId, 'listorder' => ++$listOrder]);
                        break;
                }
            } else {
                switch ($type) {
                    case 'series':
                        $this->db->update('hull_blog_series_items', ['listorder' => ++$listOrder], ['parent' => $seriesId, 'series' => $itemId]);
                        break;
                    case 'blogpost':
                        $this->db->update('hull_blog_series_items', ['listorder' => ++$listOrder], ['parent' => $seriesId, 'post' => $itemId]);
                        break;
                }
            }
        }
        return $this->db->commit();
    }

Usage Example

Ejemplo n.º 1
0
 /**
  * Update the existing series
  *
  * @param array $post
  * @param int $seriesId
  * @param array $oldItems
  * @return bool
  */
 protected function processEditSeries(array $post, int $seriesId, array $oldItems = []) : bool
 {
     if (!\array_key_exists('items', $post)) {
         return false;
     }
     if (!$this->isSuperUser() && isset($post['author'])) {
         unset($post['author']);
     }
     return $this->blog->updateSeries($seriesId, $oldItems, $post);
 }