From 717303e47566102fae2d7a32e268ec41f87dd150 Mon Sep 17 00:00:00 2001 From: Beanow Date: Fri, 11 Jul 2014 00:30:36 +0200 Subject: [PATCH] Merged import tools with admin view. --- mod/admin.php | 170 ++++++++++++++++++++++++++++----- mod/import.php | 149 ----------------------------- mod/moderate.php | 6 +- view/{import.tpl => admin.tpl} | 21 +++- view/theme/default/style.css | 10 ++ 5 files changed, 179 insertions(+), 177 deletions(-) delete mode 100644 mod/import.php rename view/{import.tpl => admin.tpl} (51%) diff --git a/mod/admin.php b/mod/admin.php index 34c66a24..72b161ca 100755 --- a/mod/admin.php +++ b/mod/admin.php @@ -2,36 +2,162 @@ function admin_content(&$a) { + if(! $_SESSION['uid']) { notice("Permission denied."); - return; + goaway($a->get_baseurl()); } - - $r = q("SELECT COUNT(*) FROM `flag` as `ftotal` WHERE 1"); - if(count($r)) - $a->set_pager_total($r[0]['ftotal']); - - $r = q("SELECT * FROM `flag` WHERE 1 ORDER BY `total` DESC LIMIT %d, %d ", - intval($a->pager['start']), - intval($a->pager['itemspage']) - ); - - if(! count($r)) { - notice("No entries."); - return; - } - + + //Get 100 flagged entries. + $r = q("SELECT `flag`.*, `profile`.`name`, `profile`.`homepage` + FROM `flag` JOIN `profile` ON `flag`.`pid`=`profile`.`id` + ORDER BY `total` DESC LIMIT 100" + ); + if(count($r)) { + $flagged = ''; foreach($r as $rr) { if($rr['reason'] == 1) - $str = 'censor'; + $str = 'Censor'; if($rr['reason'] == 2) - $str = 'dead'; - $o .= '' - . $str . ' profile: ' . $rr['pid'] . ' (' . $rr['total'] . ')
'; + $str = 'Dead'; + $flagged .= ''. + "$str profile: [#{$rr['pid']}] {$rr['name']} ({$rr['total']}x) - {$rr['homepage']}
"; } + } else { + $flagged = 'No entries.'; } + + //Get the backlog size. + $res = q("SELECT count(*) as `count` FROM `profile` WHERE `updated` < '%s'", + dbesc(date('Y-m-d H:i:s', time()-$a->config['maintenance']['min_scrape_delay']))); + $backlog = 'unknown'; + if(count($res)){ $backlog = $res[0]['count'].' entries'; } + + $tpl = file_get_contents('view/admin.tpl'); + return replace_macros($tpl, array( + '$present' => is_file('.htimport') ? ' (present)' : '', + '$flagged' => $flagged, + '$backlog' => $backlog, + '$maintenance_size' => $a->config['maintenance']['max_scrapes'].' items per maintenance call.' + )); + +} - $o .= paginate($a); - return $o; +function admin_post(&$a) +{ + + //Submit a profile URL. + if($_POST['submit_url']){ + goaway($a->get_baseurl().'/submit?url='.bin2hex($_POST['submit_url'])); + } + + //Get our input. + $url = $_POST['dir_import_url']; + $page = intval($_POST['dir_page']); + $batch = $_POST['batch_submit']; + + //Directory + $file = realpath(__DIR__.'/..').'/.htimport'; + + //Per batch setting. + $perPage = 200; + $perBatch = 2; + + if($batch){ + + require_once('include/submit.php'); + + //First get all data from file. + $data = file_get_contents($file); + $list = explode("\r\n", $data); + + //Fresh batch? + if(!isset($_SESSION['import_progress'])){ + + $_SESSION['import_progress'] = true; + $_SESSION['import_success'] = 0; + $_SESSION['import_failed'] = 0; + $_SESSION['import_total'] = 0; + notice("Started new batch. "); + + } + + //Make sure we can use try catch for all sorts of errors. + set_error_handler(function($errno, $errstr='', $errfile='', $errline='', $context=array()){ + if((error_reporting() & $errno) == 0){ return; } + throw new \Exception($errstr, $errno); + }); + + for($i=0; $i<$perBatch; $i++){ + if($url = array_shift($list)){ + set_time_limit(15); + $_SESSION['import_total']++; + $_SESSION['import_failed']++; + try{ + if(run_submit($url)){ + $_SESSION['import_failed']--; + $_SESSION['import_success']++; + } + }catch(\Exception $ex){/* We tried... */} + } + else break; + } + + $left = count($list); + + $s = $_SESSION['import_success']; + $total = $_SESSION['import_total']; + $errors = $_SESSION['import_failed']; + if($left > 0){ + notice("$left items left in batch.
Stats: $s / $total success, $errors errors."); + file_put_contents($file, implode("\r\n", $list)); + $fid = uniqid('autosubmit_'); + echo '
'. + ''; + } else { + notice("Completed batch! $s / $total success. $errors errors."); + unlink($file); + unset($_SESSION['import_progress']); + } + + return; + + } + elseif($url){ + + $result = fetch_url($url."/lsearch?p=$page&n=$perPage&search=.*"); + if($result) + $data = json_decode($result); + else + $data = false; + + if($data){ + + $rows = ''; + foreach($data->results as $profile){ + $rows .= $profile->url."\r\n"; + } + file_put_contents($file, $rows, $page > 0 ? FILE_APPEND : 0); + + $progress = min((($page+1) * $perPage), $data->total); + notice("Imported ".$progress."/".$data->total." URLs."); + + if($progress !== $data->total){ + $fid = uniqid('autosubmit_'); + echo + '
'. + ''. + ''. + '
'. + ''; + + } else { + goaway($a->get_baseurl().'/import'); + } + + } + + } + } \ No newline at end of file diff --git a/mod/import.php b/mod/import.php deleted file mode 100644 index 888d0f66..00000000 --- a/mod/import.php +++ /dev/null @@ -1,149 +0,0 @@ -get_baseurl()); - } - -} - -function import_content(&$a) -{ - - $res = q( - "SELECT count(*) as `count` FROM `profile` WHERE `updated` < '%s'", - dbesc(date('Y-m-d H:i:s', time()-$a->config['maintenance']['min_scrape_delay'])) - ); - $backlog = 'unknown'; - if(count($res)){ - $backlog = $res[0]['count'].'/'.$a->config['maintenance']['max_scrapes'].' entries'; - } - - $tpl = file_get_contents('view/import.tpl'); - return replace_macros($tpl, array( - '$present' => is_file('.htimport') ? ' (present)' : '', - '$backlog' => $backlog - )); - -} - -function import_post(&$a) -{ - - if($_POST['submit_url']){ - goaway($a->get_baseurl().'/submit?url='.bin2hex($_POST['submit_url'])); - } - - //Get our input. - $url = $_POST['url']; - $page = intval($_POST['page']); - $batch = $_POST['batch_submit']; - - //Directory - $file = realpath(__DIR__.'/..').'/.htimport'; - - //Per batch setting. - $perPage = 200; - $perBatch = 2; - - if($batch){ - - require_once('include/submit.php'); - - //First get all data from file. - $data = file_get_contents($file); - $list = explode("\r\n", $data); - - //Fresh batch? - if(!isset($_SESSION['import_progress'])){ - - $_SESSION['import_progress'] = true; - $_SESSION['import_success'] = 0; - $_SESSION['import_failed'] = 0; - $_SESSION['import_total'] = 0; - notice("Started new batch. "); - - } - - //Make sure we can use try catch for all sorts of errors. - set_error_handler(function($errno, $errstr='', $errfile='', $errline='', $context=array()){ - if((error_reporting() & $errno) == 0){ return; } - throw new \Exception($errstr, $errno); - }); - - for($i=0; $i<$perBatch; $i++){ - if($url = array_shift($list)){ - set_time_limit(15); - $_SESSION['import_total']++; - $_SESSION['import_failed']++; - try{ - if(run_submit($url)){ - $_SESSION['import_failed']--; - $_SESSION['import_success']++; - } - }catch(\Exception $ex){/* We tried... */} - } - else break; - } - - $left = count($list); - - $s = $_SESSION['import_success']; - $total = $_SESSION['import_total']; - $errors = $_SESSION['import_failed']; - if($left > 0){ - notice("$left items left in batch.
Stats: $s / $total success, $errors errors."); - file_put_contents($file, implode("\r\n", $list)); - $fid = uniqid('autosubmit_'); - echo '
'. - ''; - } else { - notice("Completed batch! $s / $total success. $errors errors."); - unlink($file); - unset($_SESSION['import_progress']); - } - - return; - - } - elseif($url){ - - $result = fetch_url($url."/lsearch?p=$page&n=$perPage&search=.*"); - if($result) - $data = json_decode($result); - else - $data = false; - - if($data){ - - $rows = ''; - foreach($data->results as $profile){ - $rows .= $profile->url."\r\n"; - } - file_put_contents($file, $rows, $page > 0 ? FILE_APPEND : 0); - - $progress = min((($page+1) * $perPage), $data->total); - notice("Imported ".$progress."/".$data->total." URLs."); - - if($progress !== $data->total){ - $fid = uniqid('autosubmit_'); - echo - '
'. - ''. - ''. - // ''. - '
'. - ''; - - } else { - goaway($a->get_baseurl().'/import'); - } - - } - - } - -} \ No newline at end of file diff --git a/mod/moderate.php b/mod/moderate.php index b42c15e6..f3a64626 100755 --- a/mod/moderate.php +++ b/mod/moderate.php @@ -68,7 +68,7 @@ function moderate_content(&$a) { $id = intval($a->argv[1]); if($a->argc > 2) $reason = $a->argv[2]; - + if($id) { $r = q("SELECT * FROM `profile` WHERE `id` = %d LIMIT 1", intval($id) @@ -80,6 +80,8 @@ function moderate_content(&$a) { ); goaway($a->get_baseurl() . '/admin'); } + }else{ + goaway($a->get_baseurl() . '/admin'); } $c .= "

Moderate/delete profile

"; @@ -129,7 +131,7 @@ function moderate_content(&$a) { $o .= "
\r\n"; - $c .= '

'; + $c .= '

'; $c .= '
' . $rr['homepage'] . '
'; $o .= '
'; diff --git a/view/import.tpl b/view/admin.tpl similarity index 51% rename from view/import.tpl rename to view/admin.tpl index 5a8d8e63..c58597fe 100644 --- a/view/import.tpl +++ b/view/admin.tpl @@ -1,9 +1,23 @@ -
+
+

Flagged entries

+
$flagged
+
+ +
+

Maintenance

+

+ Current backlog: $backlog
+ $maintenance_size +

+
+ +
+

Import tools

Mirror a directory

- - + +
@@ -16,5 +30,4 @@ -

Maintenance backlog: $backlog

\ No newline at end of file diff --git a/view/theme/default/style.css b/view/theme/default/style.css index fda75008..0088ab94 100755 --- a/view/theme/default/style.css +++ b/view/theme/default/style.css @@ -1600,4 +1600,14 @@ input#dfrn-url { width:480px; height:320px; text-align:center; +} + +.flagged-entries{ + max-height:500px; + overflow:auto; +} + +.profile-moderate-preview{ + width:80%; + min-height:700px; } \ No newline at end of file