コード例 #1
0
ファイル: Page.php プロジェクト: naonaox1126/vizualizer
 protected function executeImpl($params, $type, $name, $result, $defaultSortKey = "create_time")
 {
     $post = Vizualizer::request();
     if (!$params->check("search") || isset($post[$params->get("search")])) {
         $loader = new Vizualizer_Plugin($type);
         // ページャの初期化
         $pagerMode = $params->get("_pager_mode", Vizualizer_Pager::PAGE_SLIDE);
         $pagerDisplay = $params->get("_pager_dispmode", Vizualizer_Pager::DISPLAY_ATTR);
         if ($params->check("_pager_per_page_key") && $post[$params->get("_pager_per_page_key")] > 0) {
             $pagerCount = $post[$params->get("_pager_per_page_key")];
         } else {
             $pagerCount = $params->get("_pager_per_page", 20);
         }
         if ($params->check("_pager_displays_key")) {
             $pagerNumbers = $post[$params->get("_pager_displays_key")];
         } else {
             $pagerNumbers = $params->get("_pager_displays", 3);
         }
         $pager = new Vizualizer_Pager($pagerMode, $pagerDisplay, $pagerCount, $pagerNumbers);
         $pager->importTemplates($params);
         // カテゴリが選択された場合、カテゴリの商品IDのリストを使う
         $conditions = $this->condition;
         if (is_array($post["search"])) {
             foreach ($post["search"] as $key => $value) {
                 if (!$this->isEmpty($value)) {
                     $conditions[$key] = $value;
                 }
             }
         }
         // 追加の検索条件があれば設定
         if ($params->check("wkey")) {
             $conditions[$params->check("wkey")] = $params->check("wvalue");
         }
         if ($params->check("wkey2")) {
             $conditions[$params->check("wkey2")] = $params->check("wvalue2");
         }
         if ($params->check("wkey3")) {
             $conditions[$params->check("wkey3")] = $params->check("wvalue3");
         }
         if ($params->check("wkey4")) {
             $conditions[$params->check("wkey4")] = $params->check("wvalue4");
         }
         if ($params->check("wkey5")) {
             $conditions[$params->check("wkey5")] = $params->check("wvalue5");
         }
         if ($params->check("wkey6")) {
             $conditions[$params->check("wkey6")] = $params->check("wvalue6");
         }
         if ($params->check("wkey7")) {
             $conditions[$params->check("wkey7")] = $params->check("wvalue7");
         }
         if ($params->check("wkey8")) {
             $conditions[$params->check("wkey8")] = $params->check("wvalue8");
         }
         if ($params->check("wkey9")) {
             $conditions[$params->check("wkey9")] = $params->check("wvalue9");
         }
         // 並べ替え順序が指定されている場合に適用
         $sortOrder = "";
         $sortReverse = false;
         if ($params->check("sort_key")) {
             $sortOrder = $post[$params->get("sort_key")];
             if ($this->isEmpty($sortOrder)) {
                 $sortOrder = $defaultSortKey;
                 $sortReverse = true;
             } elseif (strpos($sortOrder, "rev@") === 0) {
                 list($dummy, $sortOrder) = explode("@", $sortOrder);
                 $sortReverse = true;
             }
         } elseif ($params->check("sort")) {
             $sortOrder = $params->check("sort");
             if (strpos($sortOrder, "rev@") === 0) {
                 list($dummy, $sortOrder) = explode("@", $sortOrder);
                 $sortReverse = true;
             }
         }
         $model = $loader->LoadModel($name);
         if ($params->get("force_operator", "0") == "1") {
             $model->setIgnoreOperator(true);
         }
         // 顧客データを検索する。
         if (!$this->isEmpty($this->countColumn)) {
             $pager->setDataSize($model->countBy($conditions, $this->countColumn));
         } else {
             $pager->setDataSize($model->countBy($conditions));
         }
         if ($this->groupBy) {
             $model->setGroupBy($this->groupBy);
         }
         $model->limit($pager->getPageSize(), $pager->getCurrentFirstOffset());
         $models = $model->findAllBy($conditions, $sortOrder, $sortReverse);
         $attr = Vizualizer::attr();
         $attr[$result . "_pager"] = $pager;
         $attr[$result] = $models;
     } elseif (!$params->check("reset") || isset($post[$params->get("reset")])) {
         $post["search"] = array();
         unset($post[$params->get("reset")]);
     }
 }
コード例 #2
0
ファイル: Transfer.php プロジェクト: naonaox1126/vizualizer
 protected function executeImpl($params, $type, $name, $defaultSortKey = "create_time")
 {
     $post = Vizualizer::request();
     if (!$params->check("search") || isset($post[$params->get("search")])) {
         $loader = new Vizualizer_Plugin($type);
         // カテゴリが選択された場合、カテゴリの商品IDのリストを使う
         $conditions = array();
         if (is_array($post["search"])) {
             foreach ($post["search"] as $key => $value) {
                 if (!$this->isEmpty($value)) {
                     $conditions[$key] = $value;
                 }
             }
         }
         // 並べ替え順序が指定されている場合に適用
         $sortOrder = "";
         $sortReverse = false;
         if ($params->check("sort_key")) {
             $sortOrder = $post[$params->get("sort_key")];
             if ($this->isEmpty($sortOrder)) {
                 $sortOrder = $defaultSortKey;
                 $sortReverse = true;
             } elseif (strpos($sortOrder, "rev@") === 0) {
                 list($dummy, $sortOrder) = explode("@", $sortOrder);
                 $sortReverse = true;
             }
         }
         $model = $loader->LoadModel($name);
         // 顧客データを検索する。
         if ($this->groupBy) {
             $model->setGroupBy($this->groupBy);
         }
         $result = $model->getAllBy($conditions, $sortOrder, $sortReverse);
         $titles = explode(",", $params->get("titles"));
         $columns = explode(",", $params->get("columns"));
         $basename = uniqid($type . "_" . $name . "_") . ".csv";
         $filename = CLAY_ROOT . DIRECTORY_SEPARATOR . "_uploads" . DIRECTORY_SEPARATOR . $basename;
         if (($fp = fopen($filename, "w+")) !== FALSE) {
             // CSVヘッダを出力
             fwrite($fp, mb_convert_encoding("\"" . implode("\",\"", $titles) . "\"\r\n", "Shift_JIS", "UTF-8"));
             while ($data = $result->next()) {
                 // データが0件以上の場合は繰り返し
                 foreach ($columns as $index => $column) {
                     if ($index > 0) {
                         fwrite($fp, ",");
                     }
                     fwrite($fp, "\"" . mb_convert_encoding($data[$column], "Shift_JIS", "UTF-8") . "\"");
                 }
                 fwrite($fp, "\r\n");
             }
             fclose($fp);
             // 作成したファイルを転送
             $info = parse_url($params->get("url", ""));
             $info["chost"] = $info["host"];
             if ($info["scheme"] == "https") {
                 $info["chost"] = "ssl://" . $info["host"];
                 if (empty($info["port"])) {
                     $info["port"] = "443";
                 }
             } elseif ($info["scheme"] == "http") {
                 if (empty($info["port"])) {
                     $info["port"] = "80";
                 }
             }
             $protocol = $info["scheme"];
             $chost = $info["chost"];
             $host = $info["host"];
             $port = $info["port"];
             if (($fp = fsockopen($chost, $port)) !== FALSE) {
                 $postdata = "";
                 $postdata .= "POST " . $info["path"] . " HTTP/1.0\r\n";
                 $postdata .= "Host: " . $host . "\r\n";
                 $postdata .= "User-Agent: VIZUALIZER-TRANSFER-CALLER\r\n";
                 $data = $params->get("data", "");
                 $data = str_replace("[[filename]]", urlencode($basename), $data);
                 $data = str_replace("[[filepath]]", urlencode($filename), $data);
                 $filesize = filesize($filename);
                 $filecontents = chunk_split(base64_encode(file_get_contents($filename)));
                 $boundary = "TRANSFER-" . sha1(uniqid());
                 $postdata .= "Content-Type: multipart/form-data; boundary=" . $boundary . "\r\n";
                 $postdata2 = "--" . $boundary . "\r\n";
                 $postdata2 .= "Content-Disposition: form-data; name=\"" . $params->get("file_key", "FILE") . "_input\"\r\n";
                 $postdata2 .= "Content-Length: " . strlen($data) . "\r\n";
                 $postdata2 .= "\r\n";
                 $postdata2 .= $data . "\r\n";
                 $postdata2 .= "\r\n--" . $boundary . "\r\n";
                 $postdata2 .= "Content-Type: text/csv\r\n";
                 $postdata2 .= "Content-Disposition: form-data; name=\"" . $params->get("file_key", "FILE") . "\"; filename=\"" . $basename . "\"\r\n";
                 $postdata2 .= "Content-Length: " . strlen($filecontents) . "\r\n";
                 $postdata2 .= "Content-Transfer-Encoding: base64\r\n";
                 $postdata2 .= "\r\n";
                 $postdata2 .= $filecontents;
                 $postdata2 .= "\r\n--" . $boundary . "--";
                 $postdata .= "Content-Length: " . strlen($postdata2) . "\r\n";
                 $postdata .= "\r\n" . $postdata2;
                 echo $postdata;
                 fputs($fp, $postdata);
                 $response = "";
                 while (!feof($fp)) {
                     $response .= fgets($fp, 4096);
                 }
                 fclose($fp);
                 $result = explode("\r\n\r\n", $response, 2);
                 $attr = Vizualizer::attr();
                 $attr["TransferResult"] = $result[1];
             }
         }
     }
 }
コード例 #3
0
ファイル: Download.php プロジェクト: naonaox1126/vizualizer
 protected function executeImpl($params, $type, $name, $result, $defaultSortKey = "create_time")
 {
     if (!$params->check("search") || isset($_POST[$params->get("search")])) {
         $loader = new Vizualizer_Plugin($type);
         // カテゴリが選択された場合、カテゴリの商品IDのリストを使う
         $conditions = array();
         $post = Vizualizer::request();
         if (is_array($post["search"])) {
             foreach ($post["search"] as $key => $value) {
                 if (!$this->isEmpty($value)) {
                     $conditions[$key] = $value;
                 }
             }
         }
         // 並べ替え順序が指定されている場合に適用
         $sortOrder = "";
         $sortReverse = false;
         if ($params->check("sort_key")) {
             $sortOrder = $post[$params->get("sort_key")];
             if ($this->isEmpty($sortOrder)) {
                 $sortOrder = $defaultSortKey;
                 $sortReverse = true;
             } elseif (strpos($sortOrder, "rev@") === 0) {
                 list($dummy, $sortOrder) = explode("@", $sortOrder);
                 $sortReverse = true;
             }
         }
         $model = $loader->LoadModel($name);
         // 顧客データを検索する。
         if ($this->groupBy) {
             $model->setGroupBy($this->groupBy);
         }
         if ($params->get("force_operator", "0") == "1") {
             $model->setIgnoreOperator(true);
         }
         $result = $model->findAllBy($conditions, $sortOrder, $sortReverse);
         if ($params->check("columns")) {
             $columns = explode(",", $params->get("columns"));
         } else {
             $columns = $model->columns();
         }
         if ($params->check("titles")) {
             $titles = explode(",", $params->get("titles"));
         } else {
             $titles = $columns;
         }
         // ヘッダを送信
         header("Content-Type: application/csv");
         header("Content-Disposition: attachment; filename=\"" . $params->get("prefix", "csvfile") . Vizualizer::now()->date("YmdHis") . ".csv\"");
         ob_end_clean();
         ob_start();
         // CSVヘッダを出力
         $out = fopen("php://output", "w");
         fputcsv($out, $titles);
         foreach ($result as $data) {
             // データが0件以上の場合は繰り返し
             $output = array();
             $data = $this->filterData($data);
             foreach ($columns as $index => $column) {
                 $output[] = $data->{$column};
             }
             fputcsv($out, $output);
         }
         fclose($out);
         echo mb_convert_encoding(ob_get_clean(), "Shift_JIS", "UTF-8");
         $this->postprocess();
         exit;
     }
 }