public function commentsAction() { $request = $this->getRequest(); $pin_id = $request->getRequest('filter_id'); $pin_info = Model_Pins::getPin($pin_id); if (!$pin_info) { $this->redirect($this->getRequest()->getBaseUrl() . $this->getRequest()->getModule() . '/pins/'); } $this->view->comments = Model_Comments::getComments(array('filter_pin_id' => $pin_id, 'sort' => 'ASC', 'order' => 'pins_comments.comment_id')); }
public static function delete($pin_id) { $db = JO_Db::getDefaultAdapter(); $pin_info = self::getPin($pin_id); if (!$pin_info) { return false; } if ($pin_info['store'] == 's3') { self::deleteImagesAmazon($pin_info['image']); } else { $model_image = new Helper_Images(); $model_image->deleteImages($pin_info['image']); } $comments = Model_Comments::getComments(array('filter_pin_id' => $pin_id)); if ($comments) { foreach ($comments as $comment) { $db->delete('pins_comments', array('comment_id = ?' => $comment['comment_id'])); $db->delete('pins_reports_comments', array('comment_id = ?' => $comment['comment_id'])); } } $del = $db->delete('pins', array('pin_id = ?' => $pin_id)); if (!$del) { return false; } else { $latest_pins = array(); $pins_query = $db->select()->from('pins', array('pin_id', 'pin_id'))->where('user_id = ?', $pin_info['user_id'])->order('pin_id DESC')->limit(15); $latest = $db->fetchPairs($pins_query); if ($latest) { $latest_pins = $latest; } $update = array('pins' => new JO_Db_Expr('pins-1'), 'latest_pins' => implode(',', $latest_pins)); $update['likes'] = new JO_Db_Expr('likes-' . (int) $db->fetchOne($db->select()->from('pins_likes', 'COUNT(like_id)')->where('pin_id = ?', $pin_id))); $db->update('users', $update, array('user_id=?' => $pin_info['user_id'])); $latest_pins = array(); $pins_query = $db->select()->from('pins', array('pin_id', 'pin_id'))->where('board_id = ?', $pin_info['board_id'])->order('pin_id DESC')->limit(15); $latest = $db->fetchPairs($pins_query); if ($latest) { $latest_pins = $latest; } $update = array('pins' => new JO_Db_Expr('pins-1'), 'latest_pins' => implode(',', $latest_pins)); $update['latest_pins'] = implode(',', $latest_pins); $db->update('boards', $update, array('board_id=?' => $pin_info['board_id'])); $db->delete('pins_invert', array('pin_id = ?' => $pin_id)); $db->delete('pins_likes', array('pin_id = ?' => $pin_id)); $db->delete('pins_reports', array('pin_id = ?' => $pin_id)); $db->delete('pins_views', array('pin_id = ?' => $pin_id)); $db->delete('users_history', array('pin_id = ?' => $pin_id)); self::deleteCache($pin_info); return true; } }
public function commentsAction() { if ($this->session->get('successfu_edite')) { $this->view->successfu_edite = true; $this->session->clear('successfu_edite'); } $request = $this->getRequest(); $url = ''; if ($request->getQuery('filter_id')) { $url .= '&filter_id=' . $request->getQuery('filter_id'); } if ($request->getQuery('filter_name')) { $url .= '&filter_name=' . $request->getQuery('filter_name'); } if ($request->getQuery('filter_username')) { $url .= '&filter_username='******'filter_username'); } if ($request->getQuery('filter_user_id')) { $url .= '&filter_user_id=' . $request->getQuery('filter_user_id'); } if ($request->getQuery('filter_price')) { $url .= '&filter_price=' . $request->getQuery('filter_price'); } if ($request->getQuery('filter_sales')) { $url .= '&filter_sales=' . $request->getQuery('filter_sales'); } if ($request->getQuery('filter_profit')) { $url .= '&filter_profit=' . $request->getQuery('filter_profit'); } if ($request->getQuery('filter_free_request')) { $url .= '&filter_free_request=' . $request->getQuery('filter_free_request'); } if ($request->getQuery('filter_free_file')) { $url .= '&filter_free_file=' . $request->getQuery('filter_free_file'); } if ($request->getQuery('filter_weekly')) { $url .= '&filter_weekly=' . $request->getQuery('filter_weekly'); } if ($request->getQuery('sort')) { $url .= '&sort=' . $request->getQuery('sort'); } if ($request->getQuery('order')) { $url .= '&order=' . $request->getQuery('order'); } if ($request->getQuery('page')) { $url .= '&page=' . $request->getQuery('page'); } $this->view->page_num = $page = $this->getRequest()->getRequest('p', 1); $data = array('start' => $page * JO_Registry::get('admin_limit') - JO_Registry::get('admin_limit'), 'limit' => JO_Registry::get('admin_limit'), 'filter_item_id' => $request->getQuery('id')); $this->view->comments = array(); $comments = Model_Comments::getComments($data); if ($comments) { foreach ($comments as $comment) { $comment['datetime'] = JO_Date::getInstance($comment['datetime'], 'dd MM yy H:i:s', true)->toString(); $comment['href'] = WM_Router::create($this->getRequest()->getBaseUrl() . '?controller=items&action=comments&item_id=' . $comment['item_id'] . '&filter=' . ($comment['reply_to'] ? $comment['reply_to'] : $comment['id'])); $this->view->comments[] = $comment; } } $total_records = Model_Comments::getTotalComments($data); $this->view->total_pages = ceil($total_records / JO_Registry::get('admin_limit')); $this->view->total_rows = $total_records; $pagination = new Model_Pagination(); $pagination->setLimit(JO_Registry::get('admin_limit')); $pagination->setPage($page); $pagination->setTotal($total_records); $pagination->setUrl($this->getRequest()->getModule() . '/items/comments/?p={page}&id=' . $request->getQuery('id') . $url); $this->view->pagination = $pagination->render(); }
public static function getPin($pin_id, $fields = array('*')) { $db = JO_Db::getDefaultAdapter(); $query = $db->select()->from('pins', array('pins.*', 'gift' => new JO_Db_Expr('pins.price > 0.0000')))->where('pins.pin_id = ?', (string) $pin_id)->limit(1); $query->where('pins.store != ""'); $result = $db->fetchRow($query); if (!$result) { return false; } $userinfo = Model_Users::getUser($result['user_id'], false, $fields); if (!$userinfo) { return false; } $result['user_via'] = Model_Users::getUser($result['via'], false, $fields); $result['source'] = Model_Source::getSource($result['source_id']); $result['user'] = $userinfo; $result['board'] = Model_Boards::getBoardTitle($result['board_id']); $result['board_data'] = Model_Boards::getBoard($result['board_id']); $result['latest_comments'] = $result['comments'] ? Model_Comments::getComments(array('filter_pin_id' => $pin_id)) : 0; $result['liked'] = $result['likes'] ? self::pinIsLiked($result['pin_id']) : 0; return $result; }
public static function delete($pin_id) { $db = JO_Db::getDefaultAdapter(); $pin_info = self::getPin($pin_id); if (!$pin_info) { return false; } if ($pin_info['image']) { $res = Helper_Db::create('pins_images_for_delete', array('pin_id' => $pin_info['pin_id'], 'date_added' => $pin_info['date_added'], 'image' => $pin_info['image'], 'store' => $pin_info['store'])); } $comments = Model_Comments::getComments(array('filter_pin_id' => $pin_id)); if ($comments) { foreach ($comments as $comment) { $db->delete('pins_comments', array('comment_id = ?' => $comment['comment_id'])); $db->delete('pins_reports_comments', array('comment_id = ?' => $comment['comment_id'])); } } $del = $db->delete('pins', array('pin_id = ?' => $pin_id)); if (!$del) { return false; } else { $db->query("INSERT INTO `pins_images_for_delete`(`pin_id`, `gallery_id`, `date_added`, `image`, `store`) SELECT `pin_id`, `gallery_id`, '" . $pin_info['date_added'] . "', `image`, `store` FROM `pins_gallery` WHERE `pin_id` = '" . $pin_id . "'"); $db->delete('pins_invert', array('pin_id = ?' => $pin_id)); $db->delete('pins_likes', array('pin_id = ?' => $pin_id)); $db->delete('pins_reports', array('pin_id = ?' => $pin_id)); $db->delete('pins_views', array('pin_id = ?' => $pin_id)); $db->delete('users_history', array('pin_id = ?' => $pin_id)); $db->delete('pins_gallery', array('pin_id = ?' => $pin_id)); $db->delete('pins_images', array('pin_id = ?' => $pin_id)); $config_private_boards = Helper_Config::get('config_private_boards'); Helper_Db::update('users', array('pins' => new JO_Db_Expr('(SELECT COUNT(DISTINCT pin_id) FROM pins WHERE user_id = users.user_id ' . ($config_private_boards ? ' AND public = 1' : '') . ')'), 'boards' => new JO_Db_Expr('(SELECT COUNT(DISTINCT board_id) FROM boards WHERE user_id = users.user_id ' . ($config_private_boards ? ' AND public = 1' : '') . ')'), 'likes' => new JO_Db_Expr('(SELECT COUNT(DISTINCT pin_id) FROM pins_likes WHERE user_id = users.user_id)'), 'following' => new JO_Db_Expr('( (SELECT COUNT(DISTINCT following_id) FROM users_following_user WHERE user_id = users.user_id AND following_id != users.user_id LIMIT 1) + (SELECT COUNT(DISTINCT following_id) FROM users_following WHERE user_id = users.user_id AND following_id != users.user_id LIMIT 1) )'), 'followers' => new JO_Db_Expr('( (SELECT COUNT(DISTINCT user_id) FROM users_following_user WHERE following_id = users.user_id AND user_id != users.user_id LIMIT 1) + (SELECT COUNT(DISTINCT user_id) FROM users_following WHERE following_id = users.user_id AND user_id != users.user_id LIMIT 1) )'), 'latest_pins' => new JO_Db_Expr('( SUBSTRING_INDEX( (SELECT GROUP_CONCAT(pin_id ORDER BY `pin_id` DESC) FROM `pins` WHERE user_id = users.user_id), \',\', 15 ) )')), array('user_id=?' => $pin_info['user_id'])); Helper_Db::update('boards', array('pins' => new JO_Db_Expr('(SELECT COUNT(DISTINCT pin_id) FROM pins WHERE board_id = boards.board_id ' . ($config_private_boards ? ' AND public = 1' : '') . ')'), 'followers' => new JO_Db_Expr('( (SELECT COUNT(DISTINCT user_id) FROM users_following_user WHERE following_id = boards.user_id AND user_id != boards.user_id LIMIT 1) + (SELECT COUNT(DISTINCT user_id) FROM users_following WHERE following_id = boards.user_id AND user_id != boards.user_id LIMIT 1) - (SELECT COUNT(DISTINCT user_id) FROM users_following_ignore WHERE following_id = boards.user_id AND board_id = boards.board_id AND user_id != boards.user_id LIMIT 1) )'), 'latest_pins' => new JO_Db_Expr('( SUBSTRING_INDEX( (SELECT GROUP_CONCAT(pin_id ORDER BY `pin_id` DESC) FROM `pins` WHERE board_id = boards.board_id), \',\', 15 ) )')), array('board_id=?' => $pin_info['board_id'])); self::deleteCache($pin_info); return true; } }
public function commentsAction() { $this->noViewRenderer(true); $request = $this->getRequest(); $response = $this->getResponse(); $page = (int) $request->getRequest('page'); if ($page < 1) { $page = 1; } $callback = $request->getRequest('callback'); if (!preg_match('/^([a-z0-9_.]{1,})$/', $callback)) { $callback = false; } $return = array(); $pin_id = (int) $request->getRequest('pinId'); $pin_info = Model_Pins::getPin($pin_id); if (!$pin_info) { $return = array('error' => $this->translate('There was a problem with the record. Please try again!')); } else { if ($request->getParam('comments') == 'post') { if ($this->isLoged()) { ///add comment } else { $return = array('error' => $this->error); } } else { $data = array('filter_pin_id' => $pin_id); $return = array('data' => array()); $comments = Model_Comments::getComments($data); if ($comments) { foreach ($comments as $comment) { $return['data'][] = array('userId' => $comment['user']['user_id'], 'userName' => $comment['user']['username'], 'avatar' => $comment['user']['avatar'], 'comment' => $comment['comment']); } } } } if ($callback) { $return = $callback . '(' . JO_Json::encode($return) . ')'; } else { $response->addHeader('Cache-Control: no-cache, must-revalidate'); $response->addHeader('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); $response->addHeader('Content-type: application/json'); $return = JO_Json::encode($return); } $response->appendBody($return); }