/** * Store a feed instance on persistent storage. * * @param DataFeed $feed The feed to store. */ public function storeFeedHandle(FeedHandle $feed) { $result = $this->getNamedRow($feed->getName()); $data = array(); $format = array(); $add = function ($name, $value, $f) use($feed, &$data, &$format) { if ($value !== null) { $data[$name] = $value; array_push($format, $f); } }; $add('df_url', $feed->getURL(), '%s'); $add('df_o_url', $feed->getOURL(), '%s'); $add('df_interval', $feed->getInterval(), '%d'); $add('df_o_interval', $feed->getOInterval(), '%d'); $add('df_key', $feed->getKey(), '%s'); $add('df_key_parameter', $feed->getKeyParameter(), '%s'); $add('df_pagination_policy', $feed->getPaginationPolicy(), '%s'); $add('df_o_pagination_policy', $feed->getOPaginationPolicy(), '%s'); if (is_array($result) && count($result) === 0) { $created = new \DateTime('now'); $feed->setCreated($created); $add('df_created', $feed->getCreated()->format('Y-m-d H:i:s'), '%s'); $add('df_name', $feed->getName(), '%s'); $this->wpdb->insert($this->tableName(), $data, $format); } else { $this->wpdb->update($this->tableName(), $data, array('df_name' => $feed->getName()), $format, array('%s')); } }