Pressbooks\Catalog::saveBook PHP Метод

saveBook() публичный Метод

Save a book to a user catalog.
public saveBook ( $blog_id, array $item ) : integer | false
$blog_id
$item array
Результат integer | false
    function saveBook($blog_id, array $item)
    {
        /** @var $wpdb \wpdb */
        global $wpdb;
        unset($item['users_id'], $item['blogs_id'], $item['deleted']);
        // Don't allow spoofing
        $data = array('users_id' => $this->userId, 'blogs_id' => $blog_id, 'deleted' => 0);
        $format = array('users_id' => $this->dbColumns['users_id'], 'blogs_id' => $this->dbColumns['blogs_id'], 'deleted' => $this->dbColumns['deleted']);
        foreach ($item as $key => $val) {
            if (isset($this->dbColumns[$key])) {
                $data[$key] = $val;
                $format[$key] = $this->dbColumns[$key];
            }
        }
        // INSERT ... ON DUPLICATE KEY UPDATE
        // @see http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
        $args = array();
        $sql = "INSERT INTO {$this->dbTable} ( ";
        foreach ($data as $key => $val) {
            $sql .= "`{$key}`, ";
        }
        $sql = rtrim($sql, ', ') . ' ) VALUES ( ';
        foreach ($format as $key => $val) {
            $sql .= $val . ', ';
            $args[] = $data[$key];
        }
        $sql = rtrim($sql, ', ') . ' ) ON DUPLICATE KEY UPDATE ';
        $i = 0;
        foreach ($data as $key => $val) {
            if ('users_id' == $key || 'blogs_id' == $key) {
                continue;
            }
            $sql .= "`{$key}` = {$format[$key]}, ";
            $args[] = $val;
            ++$i;
        }
        $sql = rtrim($sql, ', ');
        if (!$i) {
            $sql .= ' users_id = users_id ';
            // Do nothing
        }
        $sql = $wpdb->prepare($sql, $args);
        return $wpdb->query($sql);
    }