public function add($review, $parent_id = null, $before_id = null) { if (empty($review['product_id'])) { return false; } if ($parent_id) { $parent = $this->getById($parent_id); if (!$parent) { return false; } if ($parent['review_id']) { $review['review_id'] = $parent['review_id']; } else { $review['review_id'] = $parent['id']; } } if (!isset($review['ip']) && ($ip = waRequest::getIp())) { $ip = ip2long($ip); if ($ip > 2147483647) { $ip -= 4294967296; } $review['ip'] = $ip; } if (!empty($review['contact_id'])) { $user = wa()->getUser(); if ($user->getId() && !$user->get('is_user')) { $user->addToCategory(wa()->getApp()); } } if (!isset($review['datetime'])) { $review['datetime'] = date('Y-m-d H:i:s'); } if (isset($review['site']) && $review['site']) { if (!preg_match('@^https?://@', $review['site'])) { $review['site'] = 'http://' . $review['site']; } } $before_id = null; $id = parent::add($review, $parent_id, $before_id); if (!$id) { return false; } if (empty($review['review_id']) && !empty($review['rate'])) { $this->recalcProductRating($review['product_id'], $review['rate']); } return $id; }
/** * Delete records from table and fire evenets * * @param $value * @return bool */ public function deleteByField($field, $value = null) { if (is_array($field)) { $items = $this->getByField($field, $this->id); } else { $items = $this->getByField($field, $value, $this->id); } $res = false; if ($comment_ids = array_keys($items)) { /** * @event comment_predelete * @param array $comment_ids array of comment's ID * @return void */ wa()->event('comment_predelete', $comment_ids); $res = parent::deleteByField('id', $comment_ids); if ($res) { /** * @event comment_delete * @param array $comment_ids array of comment's ID * @return void */ wa()->event('comment_delete', $comment_ids); } } return $res; }
public function add($comment, $parent = null) { if (!isset($comment['datetime'])) { $comment['datetime'] = date('Y-m-d H:i:s'); } if (isset($comment['site']) && $comment['site']) { if (!preg_match('@^https?://@', $comment['site'])) { $comment['site'] = 'http://' . $comment['site']; } } return parent::add($comment, $parent); }
/** * Insert new item to on some level (parent) * @param array $data * @param int $parent_id If 0 than root level * @param int|null $before_id If null than place at the end of level * @return int|false record id */ public function add($data, $parent_id = null, $before_id = null) { if (empty($data)) { return false; } $data['full_url'] = null; if (isset($data['url']) && !$data['url']) { unset($data['url']); } if (!isset($data['create_datetime'])) { $data['create_datetime'] = date('Y-m-d H:i:s'); } $before_id = null; if (!$parent_id) { $before_id = $this->query("SELECT id FROM `{$this->table}` ORDER BY `{$this->left}` LIMIT 1")->fetchField('id'); if ($before_id === false) { $before_id = null; } if (!empty($data['url'])) { $data['url'] = $this->suggestUniqueUrl($data['url'], null, 0); $data['full_url'] = $data['url']; } } else { $parent = $this->getById($parent_id); if (empty($parent)) { return false; } $before_id = $this->query("\n SELECT id FROM `{$this->table}` WHERE parent_id = i:parent_id \n ORDER BY `{$this->left}` LIMIT 1\n ", array('parent_id' => $parent_id))->fetchField('id'); if ($before_id === false) { $before_id = null; } if (!empty($data['url'])) { $data['url'] = $this->suggestUniqueUrl($data['url'], null, $parent_id); $data['full_url'] = $this->fullUrl($parent['full_url'], $data['url']); } } $id = parent::add($data, $parent_id, $before_id); if (!$id) { return false; } if (empty($data['url'])) { $data = array(); $data['url'] = $this->suggestUniqueUrl("category_{$id}", $id, $parent_id); if (!$parent_id) { $data['full_url'] = $data['url']; } else { $data['full_url'] = $this->fullUrl($parent['full_url'], $data['url']); } $this->updateById($id, $data); } $this->clearCache(); return $id; }