/**
  * Executes index action
  *
  * @param sfWebRequest $request A request object
  */
 public function executeShow(sfWebRequest $request)
 {
     // for apiKey check
     $memberId = $this->getUser()->getMember();
     $reqFileName = $request->getParameter('filename');
     $separates = explode('.', $reqFileName);
     $cnt = count($separates);
     $fileId = '';
     $ext = '';
     if (1 == $cnt) {
         $fileId = $reqFileName;
     } else {
         $fileId = join('', array_slice($separates, 0, $cnt - 1));
         $ext = '.' . $separates[$cnt - 1];
     }
     $file = Doctrine::getTable('File')->find($fileId);
     $this->forward404Unless($file);
     $filebin = $file->getFileBin();
     $data = $filebin->getBin();
     $filename = $file->getName();
     if (!$data) {
         return $this->renderJSON(array('status' => 'error', 'message' => 'file download error'));
     }
     $filename = substr($filename, strpos($filename, "/", 1));
     $finfo = new finfo(FILEINFO_MIME_TYPE);
     $type = $finfo->buffer($data);
     $this->getResponse()->setHttpHeader('Content-Type', $type);
     $this->getResponse()->setHttpHeader('Content-Length', strlen($data));
     // for ie
     if (1 === preg_match('/MSIE/', $request->getHttpHeader('User-Agent'))) {
         $filename = mb_convert_encoding($filename, 'sjis-win', 'utf8');
     }
     $this->getResponse()->setHttpHeader('Content-Disposition', 'attachment; filename="' . $filename . '"');
     return $this->renderText($data);
 }
 public function executeIndex(sfWebRequest $request)
 {
     if ($request->getHttpHeader('X-PJAX')) {
         $this->setLayout(false);
     }
     $this->date = $this->checkDateForRequest($request);
     $this->list = Doctrine::getTable('Kakiage')->findByTargetDate($this->date);
 }
示例#3
0
 /**
  *
  * @param sfWebRequest $request 
  * @return WSRequestParameters
  */
 public function extractParameters(sfWebRequest $request)
 {
     $webRequestParameters = new WSRequestParameters();
     $logger = Logger::getLogger('core.webservices');
     $requestMethod = $request->getMethod();
     $contentType = $request->getContentType();
     $logger->debug("HTTP Method: {$requestMethod}, Content-Type: {$contentType}");
     $requestParameters = $request->getRequestParameters();
     $logger->debug("Request Parameters: " . print_r($requestParameters, true));
     if (!isset($requestParameters['ws_method'])) {
         throw new WebServiceException('Web service method is not specified', 400);
     }
     $webServiceMethod = $requestParameters['ws_method'];
     $methodParameters = array();
     // Checking for deprecated method of sending parameters using an http header
     $header = $request->getHttpHeader('ohrm_ws_method_parameters');
     if (!empty($header)) {
         $methodParameters = json_decode($header, true);
         if (!is_array($methodParameters)) {
             throw new WebServiceException("header ohrm_ws_method_parameters should be json encoded", 400);
         }
     } else {
         // get request parameters in URL (eg: /empNumber/11) after removing the default parameters
         $methodParameters = array_diff_key($requestParameters, array_flip(array('action', 'module', 'ws_method', '_sf_route')));
         // Merge with GET parameters
         $methodParameters = array_merge($methodParameters, $request->getGetParameters());
         // Check for JSON encoded body
         if ($contentType === 'application/json') {
             $postParams = json_decode(file_get_contents('php://input'), true);
             $methodParameters = array_merge($methodParameters, $postParams);
         } else {
             if ($requestMethod === 'POST') {
                 $methodParameters = array_merge($methodParameters, $request->getPostParameters());
             }
         }
     }
     //        $arrayName = $this->getArrayNameForFunction($function);
     //        if(!array_key_exists($arrayName, $methodParameters)) {
     //            throw new WebServiceException('Required array name not provided', 404);
     //        }
     $webRequestParameters->setRequestMethod($requestMethod);
     $webRequestParameters->setMethod($webServiceMethod);
     $webRequestParameters->setParameters($methodParameters);
     //        $webRequestParameters->setAppId($authenticationParamerters['app_id']);
     //        $webRequestParameters->setAppToken($authenticationParamerters['app_token']);
     //        $webRequestParameters->setSessionToken($authenticationParamerters['session_token']);
     return $webRequestParameters;
 }
示例#4
0
 /**
  *
  * @param sfWebRequest $request 
  * @return WSRequestParameters
  */
 public function extractParamerts(sfWebRequest $request)
 {
     $webRequestParameters = new WSRequestParameters();
     $requestMethod = $request->getMethod();
     $parameters = array_keys($request->getRequestParameters());
     if (count($parameters) < 4) {
         throw new WebServiceException('Web service method is not specified', 1001);
     }
     //$authenticationParamerters = json_decode($request->getHttpHeader('ohrm_ws_auth_parameters'), true);
     $methodParameters = json_decode($request->getHttpHeader('ohrm_ws_method_parameters'), true);
     //        if (!is_array($authenticationParamerters)) {
     //            throw new WebServiceException('Authentication parameters are sent in a wrong format', 1002);
     //        }
     if (!is_array($methodParameters)) {
         throw new WebServiceException('Method parameters are sent in a wrong format', 1003);
     }
     $webRequestParameters->setRequestMethod($requestMethod);
     $webRequestParameters->setMethod($parameters[2]);
     $webRequestParameters->setParameters($methodParameters);
     //        $webRequestParameters->setAppId($authenticationParamerters['app_id']);
     //        $webRequestParameters->setAppToken($authenticationParamerters['app_token']);
     //        $webRequestParameters->setSessionToken($authenticationParamerters['session_token']);
     return $webRequestParameters;
 }
 /**
  * getProxyHeaders
  *
  * @param sfWebRequest $request
  * @param boolean      $isStripUid
  * @return array
  */
 public static function getProxyHeaders($request, $isStripUid = true)
 {
     $results = array();
     if ($request->getHttpHeader('User-Agent')) {
         $userAgent = $request->getHttpHeader('User-Agent');
         if ($isStripUid) {
             if (preg_match('#^(DoCoMo/1\\.0.*)/(ser.*)$#', $userAgent, $match)) {
                 $userAgent = $match[1];
             } elseif (preg_match('#^(DoCoMo/2\\.0) (.*)\\((.*);(ser.*)\\)$#', $userAgent, $match)) {
                 $userAgent = $match[1] . ' ' . $match[2] . '(' . $match[3] . ')';
             } elseif (preg_match('#^((SoftBank|Vodafone|J-PHONE)/.*/.*)(/SN\\S*) (.*)$#', $userAgent, $match)) {
                 $userAgent = $match[1] . ' ' . $match[4];
             }
         }
         $results['User-Agent'] = $userAgent;
     }
     if (!$isStripUid) {
         $headerNames = array('X-DCMGUID', 'X-UP-SUBNO', 'X-JPHONE-UID');
         foreach ($headerNames as $name) {
             if ($request->getHttpHeader($name)) {
                 $results[$name] = $request->getHttpHeader($name);
             }
         }
     }
     $pathArray = $request->getPathInfoArray();
     foreach ($pathArray as $name => $value) {
         if (preg_match('/^HTTP_(X_(UP|JPHONE)_.*)$/', $name, $match)) {
             $name = strtr($match[1], '_', '-');
             if ($name !== 'X-JPHONE-UID' && $name !== 'X-UP-SUBNO') {
                 $results[$name] = $value;
             }
         }
     }
     $name = 'X-S-DISPLAY-INFO';
     if ($request->getHttpHeader($name)) {
         $results[$name] = $request->getHttpHeader($name);
     }
     return $results;
 }
示例#6
0
 /**
 * Method used to dynamically generate thumbnails for pagination lists.
 * Currently not in use since all thumbnails are stored on disk now.
 * Below is the old markup used in _basicListDisplay template that calls this action:
 * (to reuse this, modify the method to check for the disk on file first, then create 
 * thumbnail if necessary)
 * <div class='l'>
 			<table>
 				<tr><td><?php echo image_tag(url_for("@thumbs?img_file={$part['img_file']}&sf_format={$part['img_mime']}"), array('alt' => "{$part['part_no']}")) ?></td></tr>
 			</table>
 		</div>
 * @param sfWebRequest $request
 */
 public function executeThumbs(sfWebRequest $request)
 {
     // NOTE: All images are now files on disk (6/15/2010)
     $this->setLayout(false);
     $response = $this->getResponse();
     $response->clearHttpHeaders();
     $etag = '"' . md5($request->getParameter('img_file')) . '"';
     $response->setHttpHeader('Etag', $etag);
     if ($request->getHttpHeader('IF_NONE_MATCH') == $etag) {
         $response->setStatusCode(304, 'Not Modified');
     } else {
         // GD library uses jpeg not jpg.
         $mime_type = $request->getParameter('sf_format') == 'jpg' ? 'jpeg' : $request->getParameter('sf_format');
         $response->setContentType("image/{$mime_type}");
         $response->sendHttpHeaders();
         $thumb = new Thumbnail($request->getParameter('img_file'), $mime_type);
         try {
             if ($binary = $thumb->generate()) {
                 $response->setContent($binary);
             } else {
                 $response->setContentType('image/png');
                 $response->setContent(readfile(sfConfig::get('app_thumbs_dir') . 'default-trans.png'));
             }
         } catch (GDErrorException $gde) {
             $response->setContentType('image/png');
             $response->setContent(readfile(sfConfig::get('app_thumbs_dir') . 'default-trans.png'));
         }
         $thumb->freeMemoryResources();
         $response->sendHttpHeaders();
         $response->sendContent();
     }
     return sfView::HEADER_ONLY;
 }
示例#7
0
 public function executeScrape(sfWebRequest $r)
 {
     // If it's a browser, redirect to homepage
     if (preg_match('#Mozilla#', $r->getHttpHeader('User-Agent'))) {
         $this->redirect("@homepage");
     }
     // Injection correct MIME header
     $this->getResponse()->setContentType("text/plain");
     // Not very clean, but it works !
     $infohash = array();
     foreach (explode("&", $_SERVER["QUERY_STRING"]) as $item) {
         if (substr($item, 0, 10) == "info_hash=") {
             $hash = substr($item, 10);
             $hash = urldecode($hash);
             if (get_magic_quotes_gpc()) {
                 $info_hash = stripslashes($hash);
             } else {
                 $info_hash = $hash;
             }
             if (strlen($info_hash) == 20) {
                 $info_hash = bin2hex($info_hash);
             } else {
                 if (strlen($info_hash) != 40) {
                     continue;
                 }
             }
             $infohash[] = strtolower($info_hash);
         }
     }
     if (!count($infohash)) {
         $this->btEnvoyerErreur("Invalid hash.");
     }
     $datetime = date("Y-m-d H:i:s", time() - sfConfig::get("app_bt_interval", 900) * 2);
     $q = Doctrine_Query::create()->select("t.hash, t.title")->addSelect('(SELECT COUNT(*) FROM TorrentsPeers tt WHERE remain = 0 AND tt.hash = t.hash AND updated_at > "' . $datetime . '") AS seeders')->addSelect('(SELECT COUNT(*) FROM TorrentsPeers ttt WHERE remain > 0 AND ttt.hash = t.hash AND updated_at > "' . $datetime . '") AS leechers')->addSelect('(SELECT COUNT(*) FROM TorrentsPeers tttt WHERE remain = 0 AND tttt.hash = t.hash) AS completed')->from("Uploads t")->whereIn("t.hash", $infohash)->execute(array(), Doctrine_Core::HYDRATE_ARRAY);
     $result = "d5:filesd";
     foreach ($q as $row) {
         $hash = $this->hex2bin($row['hash']);
         $result .= "20:" . $hash . "d";
         $result .= "8:completei" . $row['seeders'] . "e";
         $result .= "10:downloadedi" . $row['completed'] . "e";
         $result .= "10:incompletei" . $row['leechers'] . "e";
         $result .= "4:name" . strlen($row['title']) . ":" . $row['title'] . "e";
         $result .= "e";
     }
     $result .= "ee";
     echo $result;
     exit;
 }