Пример #1
0
 function delete_tiny_url($id)
 {
     $tiny_url = table('tiny_url')->get($id);
     if (!$tiny_url) {
         return false;
     }
     $res = table('tiny_url')->set($id, array('status' => 2));
     if ($res) {
         $symbol = $tiny_url['prefix'] . ShortUrl::encode($id);
         $this->swoole->redis('cluster')->hDel('tiny-url:url', $symbol);
     }
     return (bool) $res;
 }
 public function redirect($code)
 {
     $shortUrl = ShortUrl::findByCode($code)[0];
     return redirect($shortUrl->long_url);
 }
Пример #3
0
 public static function findByCode($code)
 {
     $id = unpack('i', base64_decode(str_pad(strtr($code, '-_', '+/'), strlen($code) % 4, '=')));
     return ShortUrl::findOrFail($id);
 }
Пример #4
0
 function tiny_url_list()
 {
     $gets = array();
     $id = trim(get_post('id'));
     if ($id !== '') {
         $id = (int) $id;
         $gets['where'][] = "id={$id}";
         $_GET['id'] = $id;
     } else {
         $id = null;
     }
     $name = trim(get_post('name'));
     if ($name !== '') {
         $name = trim($name);
         $gets['where'][] = "name like '%{$name}%'";
         $_GET['name'] = $name;
     } else {
         $name = null;
     }
     $category_id = trim(get_post('category_id'));
     if ($category_id !== '') {
         $category_id = (int) $category_id;
         $gets['where'][] = "category_id = {$category_id}";
         $_GET['category_id'] = $category_id;
     } else {
         $category_id = null;
     }
     $category_options = model('Url_shortener')->get_category_list();
     // 搜索表单
     $form['id'] = \Swoole\Form::input('id', htmlspecialchars($id), array('id' => 'id', 'placeholder' => 'ID'));
     $form['name'] = \Swoole\Form::input('name', htmlspecialchars($name), array('id' => 'name', 'placeholder' => '短网址名称'));
     $form['category_id'] = \Swoole\Form::select('category_id', $category_options, $category_id, null, array('class' => 'select2 select2-offscreen', 'style' => 'width:100%'));
     $gets['order'] = 'id desc';
     $gets['page'] = !empty($_GET['page']) ? (int) $_GET['page'] : 1;
     $gets['pagesize'] = 20;
     $gets['where'][] = 'status = 1';
     $data = table('tiny_url')->gets($gets, $pager);
     $symbol_list = array();
     foreach ($data as $row) {
         $tiny_url_id = (int) $row['id'];
         $symbol_list[$tiny_url_id] = $row['prefix'] . ShortUrl::encode($tiny_url_id);
     }
     $total_visits_list = model('Url_shortener')->get_total_visits_list($symbol_list);
     $tiny_url_list = model('Url_shortener')->get_tiny_url_list($symbol_list);
     foreach ($data as &$row) {
         $tiny_url_id = (int) $row['id'];
         $symbol = $row['prefix'] . ShortUrl::encode($tiny_url_id);
         $row['tiny_url'] = isset($tiny_url_list[$symbol]) ? $tiny_url_list[$symbol] : '';
         $row['total_visits'] = isset($total_visits_list[$symbol]) ? $total_visits_list[$symbol] : 0;
         $row['category_name'] = isset($category_options[$row['category_id']]) ? $category_options[$row['category_id']] : '';
     }
     unset($row);
     $this->assign('form', $form);
     $this->assign('data', $data);
     $this->assign('pager', array('render' => $pager->render()));
     $this->display();
 }