示例#1
0
 /**
  * @Route("/{_locale}/get/seed/{seed}", name="get_by_seed_locale")
  * @Route("/get/seed/{seed}", name="get_by_seed")
  */
 public function getBySeedAction(Request $request, $seed)
 {
     $return = array('status' => 1, 'message' => '', 'data' => null);
     // retorno padrão
     $router = $this->container->get('router');
     $translator = $this->get('translator');
     // da uma limpada
     $seed = md5($seed . $this->container->getParameter('secret'));
     // extrai um numero de 0~9
     $seed = substr(base_convert(md5($seed), 16, 10), -1);
     srand($seed);
     // usa pro rand
     // image path
     $image_path = $request->getUriForPath('/image/cenouro.png');
     $message = '';
     // são tão poucas opções que nem vale a pena criar DB
     // balanceia as chances um pouco
     switch (rand(1, 4)) {
         case 1:
             $message = 'Yes!';
             break;
         case 2:
             $message = 'No!';
             break;
         default:
             switch (rand(1, 6)) {
                 case 1:
                     $message = 'Maybe.';
                     break;
                 case 2:
                     $message = 'Sure!';
                     break;
                 case 3:
                     $message = "I really don't care.";
                     break;
                 case 4:
                     $message = "Of course not.";
                     break;
                 case 5:
                     $message = "Ask again.";
                     break;
                 case 6:
                     $message = "Screw you!";
                     break;
             }
             break;
     }
     // traduz, se precisar
     $message = $translator->trans($message);
     // responde
     $data = array('message' => $message, 'image' => $image_path);
     $return['data'] = $data;
     $response = new JsonResponse($return);
     // cache
     $response->setPublic();
     $response->setSharedMaxAge(600000);
     $response->headers->addCacheControlDirective('must-revalidate', true);
     return $response;
 }
示例#2
0
 public function getListAction(Application $app)
 {
     $userList = $this->repository->findAll();
     $date = new \DateTime();
     $date->modify('+' . self::MAX_AGE . ' seconds');
     $response = new JsonResponse($userList, JsonResponse::HTTP_OK);
     $responseHash = sha1($response->getContent());
     $response->setMaxAge(self::MAX_AGE);
     $response->setSharedMaxAge(self::MAX_AGE);
     $response->setExpires($date);
     $response->setETag($responseHash);
     $response->isNotModified($app['request']);
     return $response;
 }
 /**
  * Lists all Entities
  *
  * @Route("/data/index_all.json", name="servicios_index_json" )
  * @Method("GET")
  * @Template()
  */
 public function indexAllJsonAction(Request $request)
 {
     $em = $this->getDoctrine()->getManager();
     $entities = $em->getRepository('BcTicCamIpalBundle:Servicio')->createQueryBuilder('s')->join('s.contratos', 'c')->join('c.empresas', 'e')->join('s.area', 'a')->join('a.pais', 'p')->where('c.visible = 1')->orderBy('s.nombre', 'ASC');
     $role = false;
     if ($role) {
         //Do Nothing
     } else {
         $paises = array();
         foreach ($this->get('security.context')->getToken()->getUser()->getPais() as $pais) {
             $paises[$pais->getId()] = $pais->getId();
         }
         $entities->andWhere('p.id IN (:paises)');
         $entities->setParameter('paises', $paises);
     }
     $data = array();
     foreach ($entities->getQuery()->getResult() as $entity) {
         $data[] = array('id' => $entity->getId(), 'nombre' => $entity->__toString());
     }
     $response = new JsonResponse($data);
     $response->setSharedMaxAge(600);
     //Cache 10 minutes
     return $response;
 }
示例#4
0
 /**
  * @Route(
  *      "/packages/{name}/stats/all.json",
  *      name="package_stats",
  *      requirements={"name"="[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+?"}
  * )
  */
 public function overallStatsAction(Request $req, Package $package, Version $version = null)
 {
     if ($from = $req->query->get('from')) {
         $from = new DateTimeImmutable($from);
     } else {
         $from = $this->guessStatsStartDate($version ?: $package);
     }
     if ($to = $req->query->get('to')) {
         $to = new DateTimeImmutable($to);
     } else {
         $to = new DateTimeImmutable('-2days 00:00:00');
     }
     $average = $req->query->get('average', $this->guessStatsAverage($from, $to));
     $datePoints = $this->createDatePoints($from, $to, $average, $package, $version);
     $redis = $this->get('snc_redis.default');
     if ($average === 'Daily') {
         $datePoints = array_map(function ($vals) {
             return $vals[0];
         }, $datePoints);
         $datePoints = array('labels' => array_keys($datePoints), 'values' => $redis->mget(array_values($datePoints)));
     } else {
         $datePoints = array('labels' => array_keys($datePoints), 'values' => array_values(array_map(function ($vals) use($redis) {
             return array_sum($redis->mget(array_values($vals)));
         }, $datePoints)));
     }
     $datePoints['average'] = $average;
     if ($average !== 'daily') {
         $dividers = ['monthly' => 30.41, 'weekly' => 7];
         $divider = $dividers[$average];
         $datePoints['values'] = array_map(function ($val) use($divider) {
             return ceil($val / $divider);
         }, $datePoints['values']);
     }
     if (empty($datePoints['labels']) && empty($datePoints['values'])) {
         $datePoints['labels'][] = date('Y-m-d');
         $datePoints['values'][] = 0;
     }
     $response = new JsonResponse($datePoints);
     $response->setSharedMaxAge(1800);
     return $response;
 }
示例#5
0
<?php

require_once __DIR__ . '/../vendor/autoload.php';
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\JsonResponse;
$app = new Silex\Application();
//$app['debug'] = true;
// Twig
$app->register(new Silex\Provider\TwigServiceProvider(), array('twig.path' => __DIR__ . '/../views'));
// Cache
$app->register(new Silex\Provider\HttpCacheServiceProvider(), array('http_cache.cache_dir' => __DIR__ . '/../cache/', 'http_cache.esi' => null));
// Weekend, where the magic happens.
$app['weekend'] = function () {
    return new \Ternel\Weekend();
};
// Website
$app->get('/', function () use($app) {
    $response = new Response($app['twig']->render('index.html.twig', ['text' => $app['weekend']->getText(), 'subtext' => $app['weekend']->getSubText()]), 200);
    $response->setPublic();
    $response->setSharedMaxAge(60);
    return $response;
});
// Api
$app->get('/api', function () use($app) {
    $response = new JsonResponse(['text' => $app['weekend']->getText(), 'subtext' => $app['weekend']->getSubText()], 200);
    $response->setPublic();
    $response->setSharedMaxAge(60);
    return $response;
});
$app['http_cache']->run();
 /**
  * @Template()
  * @Route(
  *     "/packages/{name}.{_format}",
  *     name="view_package",
  *     requirements={"name"="[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+?", "_format"="(json)"},
  *     defaults={"_format"="html"}
  * )
  * @Method({"GET"})
  */
 public function viewPackageAction(Request $req, $name)
 {
     $repo = $this->getDoctrine()->getRepository('PackagistWebBundle:Package');
     try {
         /** @var $package Package */
         $package = $repo->findOneByName($name);
     } catch (NoResultException $e) {
         if ('json' === $req->getRequestFormat()) {
             return new JsonResponse(array('status' => 'error', 'message' => 'Package not found'), 404);
         }
         if ($providers = $repo->findProviders($name)) {
             return $this->redirect($this->generateUrl('view_providers', array('name' => $name)));
         }
         return $this->redirect($this->generateUrl('search', array('q' => $name, 'reason' => 'package_not_found')));
     }
     if ('json' === $req->getRequestFormat()) {
         $data = $package->toArray();
         try {
             $data['downloads'] = $this->get('packagist.download_manager')->getDownloads($package);
             $data['favers'] = $this->get('packagist.favorite_manager')->getFaverCount($package);
         } catch (ConnectionException $e) {
             $data['downloads'] = null;
             $data['favers'] = null;
         }
         // TODO invalidate cache on update and make the ttl longer
         $response = new JsonResponse(array('package' => $data));
         $response->setSharedMaxAge(3600);
         return $response;
     }
     $version = null;
     $expandedVersion = null;
     $versions = $package->getVersions();
     if (is_object($versions)) {
         $versions = $versions->toArray();
     }
     usort($versions, Package::class . '::sortVersions');
     if (count($versions)) {
         $versionRepo = $this->getDoctrine()->getRepository('PackagistWebBundle:Version');
         $version = $versionRepo->getFullVersion(reset($versions)->getId());
         $expandedVersion = reset($versions);
         foreach ($versions as $v) {
             if (!$v->isDevelopment()) {
                 $expandedVersion = $v;
                 break;
             }
         }
         $expandedVersion = $versionRepo->getFullVersion($expandedVersion->getId());
     }
     $data = array('package' => $package, 'version' => $version, 'versions' => $versions, 'expandedVersion' => $expandedVersion);
     try {
         $data['downloads'] = $this->get('packagist.download_manager')->getDownloads($package);
         if ($this->getUser()) {
             $data['is_favorite'] = $this->get('packagist.favorite_manager')->isMarked($this->getUser(), $package);
         }
     } catch (ConnectionException $e) {
     }
     $data['dependents'] = $repo->getDependentCount($package->getName());
     if ($maintainerForm = $this->createAddMaintainerForm($package)) {
         $data['addMaintainerForm'] = $maintainerForm->createView();
     }
     if ($removeMaintainerForm = $this->createRemoveMaintainerForm($package)) {
         $data['removeMaintainerForm'] = $removeMaintainerForm->createView();
     }
     if ($deleteForm = $this->createDeletePackageForm($package)) {
         $data['deleteForm'] = $deleteForm->createView();
     }
     if ($this->getUser() && ($this->isGranted('ROLE_DELETE_PACKAGES') || $package->getMaintainers()->contains($this->getUser()))) {
         $data['deleteVersionCsrfToken'] = $this->get('security.csrf.token_manager')->getToken('delete_version');
     }
     return $data;
 }
 /**
  * List a Contrato
  *
  * @Route("/data/show.json", name="contrato_json" )
  * @Method("POST")
  * @Template()
  */
 public function showJsonAction(Request $request)
 {
     $em = $this->getDoctrine()->getManager();
     $entity = $em->getRepository('BcTicCamIpalBundle:Contrato')->find($request->request->get('id'));
     if (!$entity) {
         return new JsonResponse(array());
     }
     $data = array('id' => $entity->getId(), 'nombre' => $entity->__toString(), 'empresas' => $entity->getEmpresas(), 'area' => $entity->getArea()->getId(), 'servicio' => $entity->getServicio()->getId(), 'subgerencia' => $entity->getSubGerencia()->getId(), 'gerencia' => $entity->getSubGerencia()->getGerencia()->getId(), 'mandante' => $entity->getMandante()->getId(), 'subcontrato' => $entity->getSubcontrato(), 'pais' => $entity->getPais()->getId());
     $response = new JsonResponse($data);
     $response->setSharedMaxAge(600);
     //Cache 10 minutes
     return $response;
 }
 /**
  * Lists all Prevencionistas by Query
  *
  * @Route("/data/prevencionistas.json", name="registros_prevencionistas_json")
  * @Method("GET")
  * @Template()
  */
 public function indexPrevencionistaJsonAction(Request $request)
 {
     $em = $this->getDoctrine()->getManager();
     $entities = $em->getRepository('BcTicCamIpalBundle:Registro')->createQueryBuilder('r')->where('r.visible = 1')->join('r.roles', 'rol')->where('rol.nombre = :rol')->andWhere('r.nombre LIKE :query')->setParameters(array('rol' => 'PREVENCIONISTA', 'query' => '%' . $request->request->get('query', '') . '%'))->orderBy('r.nombre', 'ASC')->getQuery();
     $data = array();
     foreach ($entities->getResult() as $entity) {
         $data[] = array('id' => $entity->getId(), 'nombre' => ucwords(strtolower($entity->__toString())));
     }
     //AHora todos los usuarios que sean Inspectores
     $entities = $em->getRepository('BcTicCamIpalBundle:Usuario')->createQueryBuilder('u')->join('u.roles', 'rol')->join('u.pais', 'p')->where('rol.nombre = :rol AND u.visible = 1')->andWhere('u.nombre LIKE :query')->setParameters(array('rol' => 'PREVENCIONISTA', 'query' => '%' . $request->request->get('query', '') . '%'))->orderBy('u.nombre', 'ASC');
     $role = false;
     if ($role) {
         //Do Nothing
     } else {
         $entities->andWhere('p.id IN (:paises)');
         $paises = array();
         foreach ($this->get('security.context')->getToken()->getUser()->getPais() as $pais) {
             $paises[$pais->getId()] = $pais->getId();
         }
         $entities->setParameter(':paises', $paises);
     }
     foreach ($entities->getQuery()->getResult() as $entity) {
         $data[] = array('id' => $entity->getId(), 'nombre' => ucwords(strtolower($entity->__toString())));
     }
     $response = new JsonResponse($data);
     $response->setSharedMaxAge(600);
     //Cache 10 minutes
     return $response;
 }
 /**
  * Lists all Empleados by Query
  *
  * @Route("/data/supervisores.json", name="registros_supervisores_json")
  * @Method("POST")
  * @Template()
  */
 public function indexSupervisoresJsonAction(Request $request)
 {
     $em = $this->getDoctrine()->getManager();
     $entities = $em->getRepository('BcTicCamIpalBundle:Empleado')->createQueryBuilder('r')->where(' (p.id = :pais) AND (  (r.rut LIKE :query) OR (r.nombre LIKE :query) ) ')->orderBy('r.nombre', 'ASC')->join('r.pais', 'p')->setParameters(array('pais' => $request->get('pais'), 'query' => '%' . $request->get('query') . '%'))->getQuery();
     $data = array();
     foreach ($entities->getResult() as $entity) {
         $data[] = array('id' => $entity->getId(), 'nombre' => ucwords(strtolower($entity->__toString())));
     }
     $response = new JsonResponse($data);
     $response->setSharedMaxAge(600);
     //Cache 10 minutes
     return $response;
 }