/src/Aggregator/DealsBundle/Controller/PublicController.php
PHP | 433 lines | 376 code | 45 blank | 12 comment | 27 complexity | f7a01b0f644f75aaa1751bcfef353916 MD5 | raw file
Possible License(s): BSD-3-Clause, BSD-2-Clause, LGPL-2.0, MIT, Apache-2.0, LGPL-2.1, LGPL-3.0
- <?php
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- namespace Aggregator\DealsBundle\Controller;
- use Symfony\Bundle\FrameworkBundle\Controller\Controller;
- use Symfony\Component\HttpFoundation\Response;
- use Aggregator\DealsBundle\Entity\link;
- use Aggregator\DealsBundle\Entity\City;
- use Aggregator\DealsBundle\Entity\Feed;
- use Aggregator\DealsBundle\Entity\Category;
- use Aggregator\DealsBundle\Form\linkType;
- use Symfony\Component\HttpFoundation\File\UploadedFile;
- class publicController extends Controller {
- public function indexAction($id = 20) {
- $user = array();
- $securityContext = $this->get('security.context');
- if ($securityContext->getToken() != null) {
- $user = $securityContext->getToken()->getUser()->getFullName();
- }
- $em = $this->getDoctrine()->getEntityManager();
- $data = array();
- $count = $em->getConnection()->fetchAssoc('select count(*) as count from link');
- $counter = $count['count'];
- $allEntities = $em->getRepository('AggregatorDealsBundle:link')->findAll();
- $entities = $em->getRepository('AggregatorDealsBundle:link')->findBy($data, null, 10, 10 * $id);
- $cities = $em->getRepository('AggregatorDealsBundle:City')->findAll();
- $feed = $em->getRepository('AggregatorDealsBundle:Feed')->findAll();
- $categories = $em->getRepository('AggregatorDealsBundle:Category')->findAll();
- $two = array();
- $three = array();
- $four = array();
- foreach ($allEntities as $fee) {
- $data[] = $fee->getFeed();
- $name = $fee->getFeed();
- if (!isset($four["$name"])) {
- $four["$name"] = 0;
- }
- if (in_array($name, $data)) {
- $four["$name"] = $four["$name"] + 1;
- }
- }
- foreach ($allEntities as $fee) {
- $data[] = $fee->getCity();
- $name = $fee->getCity();
- if (!isset($two["$name"])) {
- $two["$name"] = 0;
- }
- if (in_array($name, $data)) {
- $two["$name"] = $two["$name"] + 1;
- }
- }
- $data = array();
- foreach ($allEntities as $fee) {
- $data[] = $fee->getCategory();
- $name = $fee->getCategory();
- if (!isset($three["$name"])) {
- $three["$name"] = 0;
- }
- if (in_array($name, $data)) {
- $three["$name"] = $three["$name"] + 1;
- }
- }
- return $this->render('AggregatorDealsBundle:Public:index.html.twig', array('entities' => $entities,
- 'cities' => $cities,
- 'feeds' => $feed,
- 'counters' => $two,
- 'counter_four' => $four,
- 'categories' => $categories,
- 'counter_two' => $three,
- 'counter' => $counter,
- 'user' => $user));
- }
- public function limitAction($id) {
- echo($id);
- $em = $this->getDoctrine()->getEntityManager();
- $data = array();
- $count = $em->getConnection()->fetchAssoc('select count(*) as count from link');
- echo($count['count']);
- $entities = $em->getRepository('AggregatorDealsBundle:link')->findBy($data, null, 10, 10 * $id);
- foreach ($entities as $entity) {
- echo($entity->getTitle());
- }
- return $this->render('AggregatorDealsBundle:Public:limit.html.twig');
- }
- public function jsonAction() {
- $user = array();
- $securityContext = $this->get('security.context');
- if ($securityContext->getToken() != null) {
- $user = $securityContext->getToken()->getUser()->getFullName();
- }
- $em = $this->getDoctrine()->getEntityManager();
- $data = array();
- $count = $em->getConnection()->fetchAssoc('select count(*) as count from link');
- $counter = $count['count'];
- $allEntities = $em->getRepository('AggregatorDealsBundle:link')->findAll();
- foreach ($allEntities as $linker) {
- $data[] = array('title' => $linker->getTitle(),
- 'image' => $linker->getImage(),
- 'link' => $linker->getLink(),
- 'regularprice' => $linker->getRegularprice(),
- 'price' => $linker->getPrice(),
- 'logo' => $linker->getFeed()->getLogo());
- }
- $data = array('items' => $data, 'numRows' => count($data));
- return new Response(json_encode($data));
- }
- public function cordAction() {
- $user = array();
- $securityContext = $this->get('security.context');
- if ($securityContext->getToken() != null) {
- $user = $securityContext->getToken()->getUser()->getFullName();
- }
- $em = $this->getDoctrine()->getEntityManager();
- $data = array();
- $allEntities = $em->getRepository('AggregatorDealsBundle:link')->findAll();
- foreach ($allEntities as $linker) {
- if ($linker->getLatitude() != null) {
- $data[] = array(
- 'title' => $linker->getTitle(),
- 'lat' => $linker->getLatitude(),
- 'lon' => $linker->getLongitude());
- }
- }
- $data = array('items' => $data, 'numRows' => count($data));
- return new Response(json_encode($data));
- }
- public function dojoAction() {
- $test = array();
- return $this->render('AggregatorDealsBundle:Public:dojo.html.twig', array('test' => $test));
- }
- public function meAction($id) {
- echo($id);
- $test = $this->get('fkr_simple_pie.rss');
- $test->set_feed_url('http://feeds.feedburner.com/groupongreater-toronto-area');
- //$test->set_feed_url('http://www.dealfind.com/rss/toronto.rss');
- // Run SimplePie.
- $test->init();
- $test->handle_content_type();
- $tags = $test->get_channel_tags();
- $data = $test->get_items();
- foreach ($data as $dat) {
- echo("THIS IS TITLE " . $dat->get_title());
- echo("THIS IS CONTENT ");
- print_r($dat->get_description());
- echo("THIS IS LINKS ");
- print_r($dat->get_links());
- $image = $this->scrapeImage($dat->get_description());
- print_r("THIS IS IMAGE ");
- print_r($image);
- //print_r($dat->get_image_url());
- }
- return $this->render('AggregatorDealsBundle:Public:me.html.twig', array('rss' => $data));
- }
- public function findAction() {
- $em = $this->getDoctrine()->getEntityManager();
- $searchForm = $this->createSearchForm();
- $request = $this->getRequest();
- $searchForm->bindRequest($request);
- $data = $request->get('form');
- if (!empty($data['search'])) {
- $query = $em->createQuery('SELECT p FROM AggregatorDealsBundle:link
- p WHERE p.title like :title
- ORDER BY p.title ASC')
- ->setParameter('title', '%' . $data['search'] . '%');
- $entity = $query->getResult();
- }
- $response = $this->render('AggregatorDealsBundle:Public:search.html.twig', array('items' => $entity,
- 'search_form' => $searchForm->createView(),
- )
- );
- return $response;
- }
- public function findByCatAction() {
- $em = $this->getDoctrine()->getEntityManager();
- $searchForm = $this->createSearchForm();
- $request = $this->getRequest();
- $searchForm->bindRequest($request);
- $data = $request->get('form');
- if (!empty($data['search'])) {
- $query = $em->createQuery('SELECT p FROM AggregatorDealsBundle:link p
- join p.category c where c.name = :category
- ORDER BY c.name ASC')
- ->setParameter('category', $data['search']);
- $entity = $query->getResult();
- }
- $response = $this->render('AggregatorDealsBundle:Public:search.html.twig', array('items' => $entity,
- 'search_form' => $searchForm->createView(),
- )
- );
- return $response;
- }
- public function findBySiteAction() {
- $em = $this->getDoctrine()->getEntityManager();
- $searchForm = $this->createSearchForm();
- $request = $this->getRequest();
- $searchForm->bindRequest($request);
- $data = $request->get('form');
- if (!empty($data['search'])) {
- $query = $em->createQuery('SELECT p FROM AggregatorDealsBundle:link p
- join p.feed f where f.name like :feed
- ORDER BY f.name ASC')
- ->setParameter('feed', '%' . $data['search'] . '%');
- $entity = $query->getResult();
- }
- $response = $this->render('AggregatorDealsBundle:Public:search.html.twig', array('items' => $entity,
- 'search_form' => $searchForm->createView(),
- )
- );
- return $response;
- }
- public function findByCityAction() {
- $em = $this->getDoctrine()->getEntityManager();
- $searchForm = $this->createSearchForm();
- $request = $this->getRequest();
- $searchForm->bindRequest($request);
- $data = $request->get('form');
- if (!empty($data['city'])) {
- $query = $em->createQuery('SELECT p FROM AggregatorDealsBundle:link p
- left join p.city c
- left join p.category m
- where c.name like :city
- ORDER BY c.name,m.name ASC')
- ->setParameter('city', '%' . $data['city'] . '%');
- $entity = $query->getResult();
- }
- $response = $this->render('AggregatorDealsBundle:Public:search.html.twig', array('items' => $entity,
- 'search_form' => $searchForm->createView(),
- )
- );
- return $response;
- }
- public function findByFilterAction() {
- $em = $this->getDoctrine()->getEntityManager();
- $searchForm = $this->createFilterForm();
- $user = array();
- $securityContext = $this->get('security.context');
- if ($securityContext->getToken() != null) {
- $user = $securityContext->getToken()->getUser()->getFullName();
- }
- $em = $this->getDoctrine()->getEntityManager();
- $data = array();
- $count = $em->getConnection()->fetchAssoc('select count(*) as count from link');
- $counter = $count['count'];
- $allEntities = $em->getRepository('AggregatorDealsBundle:link')->findAll();
- $entities = $em->getRepository('AggregatorDealsBundle:link')->findBy($data, null, 10, 10 * $id);
- $cities = $em->getRepository('AggregatorDealsBundle:City')->findAll();
- $feed = $em->getRepository('AggregatorDealsBundle:Feed')->findAll();
- $categories = $em->getRepository('AggregatorDealsBundle:Category')->findAll();
- $two = array();
- $three = array();
- $four = array();
- foreach ($allEntities as $fee) {
- $data[] = $fee->getFeed();
- $name = $fee->getFeed();
- if (!isset($four["$name"])) {
- $four["$name"] = 0;
- }
- if (in_array($name, $data)) {
- $four["$name"] = $four["$name"] + 1;
- }
- }
- foreach ($allEntities as $fee) {
- $data[] = $fee->getCity();
- $name = $fee->getCity();
- if (!isset($two["$name"])) {
- $two["$name"] = 0;
- }
- if (in_array($name, $data)) {
- $two["$name"] = $two["$name"] + 1;
- }
- }
- $data = array();
- foreach ($allEntities as $fee) {
- $data[] = $fee->getCategory();
- $name = $fee->getCategory();
- if (!isset($three["$name"])) {
- $three["$name"] = 0;
- }
- if (in_array($name, $data)) {
- $three["$name"] = $three["$name"] + 1;
- }
- }
- $request = $this->getRequest();
- $searchForm->bindRequest($request);
- $data = $request->get('form');
- if (!empty($data['city'])) {
- $query = $em->createQuery('SELECT p FROM AggregatorDealsBundle:link p
- left join p.city c
- left join p.feed f
- left join p.category x
- where c.name like :city
- and f.name like :feed
- and x.name like :category
- ORDER BY x.name ASC')
- ->setParameter('city', '%' . $data['city'] . '%')
- ->setParameter('feed', '%' . $data['feed'] . '%')
- ->setParameter('category', '%' . $data['category'] . '%');
- $entity = $query->getResult();
- }
- $response = $this->render('AggregatorDealsBundle:Public:index.html.twig', array('entities' => $entity,
- 'cities' => $cities,
- 'feeds' => $feed,
- 'counters' => $two,
- 'counter_four' => $four,
- 'categories' => $categories,
- 'counter_two' => $three,
- 'counter' => $counter,
- 'user' => $user,
- 'search_form' => $searchForm->createView(),
- )
- );
- return $response;
- }
- public function uploadAction() {
- $uploadForm = $this->createUploadForm();
- $request = $this->getRequest();
- $uploadForm->bindRequest($request);
- $data = $request->get('form');
- print_r($_FILES);
- $result = move_uploaded_file($_FILES['form']['tmp_name']['file'], 'uploads/' . $_FILES['form']['name']['file']);
- echo("this is result " . $result);
- $entity = array();
- $response = $this->render('AggregatorDealsBundle:Public:upload.html.twig', array('items' => $entity,
- 'upload_form' => $uploadForm->createView(),
- )
- );
- return $response;
- }
- private function createSearchForm() {
- return $this->createFormBuilder()
- ->add('search', 'search')
- ->getForm()
- ;
- }
- private function createFilterForm() {
- return $this->createFormBuilder()
- ->add('city', 'text')
- ->add('category', 'text')
- ->add('feed', 'text')
- ->getForm()
- ;
- }
- private function createUploadForm() {
- return $this->createFormBuilder()
- ->add('file', 'file')
- ->getForm()
- ;
- }
- private function scrapeImage($text) {
- $pattern = '/src=[\'"]?([^\'" >]+)[\'" >]/';
- preg_match_all($pattern, $text, $link);
- return $link;
- }
- public function parseGrouponAction() {
- $url = "http://api.groupon.com/v2/deals?client_id=a663679ed3c8b01097634333fa743cf3a721f4fe";
- $ch = curl_init();
- // Set request url
- curl_setopt($ch, CURLOPT_URL, $url);
- // TRUE to include the header in the output.
- curl_setopt($ch, CURLOPT_HEADER, false);
- // A custom request method to use instead of "GET" or "HEAD" when doing a HTTP request.
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- //curl_setopt($ch, CURLOPT_GET, $feed);
- $data = curl_exec($ch);
- $data = json_decode($data);
- //print_r($data);
- foreach ($data->deals as $dat) {
- foreach ($dat as $test) {
- foreach ($test as $t) {
- echo($t->title);
- echo($t->price->formattedAmount);
- echo($t->value->formattedAmount);
- print_r($t->tags);
- print_r($t->locationNote);
- echo("<br>");
- }
- print_r($test->tags);
- print_r($test->locationNote);
- }
- print_r($dat->tags);
- print_r($dat->locationNote);
- }
- return $this->render('AggregatorDealsBundle:Public:me.html.twig', array('rss' => $data));
- }
- }
- ?>