diff --git a/e107_plugins/download/admin_download.php b/e107_plugins/download/admin_download.php new file mode 100644 index 000000000..5225e9358 --- /dev/null +++ b/e107_plugins/download/admin_download.php @@ -0,0 +1,827 @@ +load_files(); +} + +$e_sub_cat = 'download'; +require_once(e_HANDLER."form_handler.php"); +require_once(e_HANDLER."userclass_class.php"); +require_once(e_HANDLER."file_class.php"); + +$fl = new e_file; + +// -------- Presets. ------------ +require_once(e_HANDLER."preset_class.php"); +$pst = new e_preset; +$pst->form = array("myform","dlform"); // form id of the form that will have it's values saved. +$pst->page = array("download.php?create","download.php?cat"); // display preset options on which page(s). +$pst->id = array("admin_downloads","admin_dl_cat"); +// ------------------------------- + +$download = new download(); +$adminDownload = new adminDownload(); +require_once(e_ADMIN."auth.php"); +$pst->save_preset(); // unique name(s) for the presets - comma separated. + + /* +One form example (no arrays needed) +$pst->form = "myform"; // form id of the form that will have it's values saved. +$pst->page = "download.php?create"; // display preset options on which page. +$pst->save_preset("admin_downloads"); // unique name for the preset +*/ + +$rs = new form; +$subAction = ''; +if (e_QUERY) +{ + $tmp = explode(".", e_QUERY); + $action = $tmp[0]; + $subAction = varset($tmp[1],''); + $id = intval(varset($tmp[2],'')); + $from = varset($tmp[3], 0); + $maintPage = varset($tmp[4], ''); + unset($tmp); +} + + +if (isset($_POST['delete'])) +{ + $tmp = array_keys($_POST['delete']); + list($delete, $del_id) = explode("_", $tmp[0]); + $del_id = intval($del_id); + unset($_POST['searchquery']); +} + +$from = ($from ? $from : 0); +$amount = 50; + +if (isset($_POST)) +{ + $e107cache->clear("download_cat"); +} + +if (isset($_POST['add_category'])) +{ + $adminDownload->create_category($subAction, $id); +} + + +if (isset($_POST['submit_download'])) +{ + $adminDownload->submit_download($subAction, $id); + $action = "main"; + unset($subAction, $id); +} + + +if (isset($_POST['update_catorder'])) +{ + foreach($_POST['catorder'] as $key=>$order) + { + if (is_numeric($_POST['catorder'][$key])) + { + $sql -> db_Update("download_category", "download_category_order='".intval($order)."' WHERE download_category_id='".intval($key)."'"); + } + } + $admin_log->log_event('DOWNL_08',implode(',',array_keys($_POST['catorder'])),E_LOG_INFORMATIVE,''); + $ns->tablerender("", "
".LAN_UPDATED."
"); +} + + +if (isset($_POST['updateoptions'])) +{ + unset($temp); + $temp['download_php'] = $_POST['download_php']; + $temp['download_view'] = $_POST['download_view']; + $temp['download_sort'] = $_POST['download_sort']; + $temp['download_order'] = $_POST['download_order']; + $temp['mirror_order'] = $_POST['mirror_order']; + $temp['recent_download_days'] = $_POST['recent_download_days']; + $temp['agree_flag'] = $_POST['agree_flag']; + $temp['download_email'] = $_POST['download_email']; + $temp['agree_text'] = $tp->toDB($_POST['agree_text']); + $temp['download_denied'] = $tp->toDB($_POST['download_denied']); + $temp['download_reportbroken'] = $_POST['download_reportbroken']; + if ($_POST['download_subsub']) $temp['download_subsub'] = '1'; else $temp['download_subsub'] = '0'; + if ($_POST['download_incinfo']) $temp['download_incinfo'] = '1'; else $temp['download_incinfo'] = '0'; + if ($admin_log->logArrayDiffs($temp, $pref, 'DOWNL_01')) + { + save_prefs(); + $message = DOWLAN_65; + } + else + { + $message = DOWLAN_8; + } +} + +$targetFields = array('gen_datestamp', 'gen_user_id', 'gen_ip', 'gen_intdata', 'gen_chardata'); // Fields for download limits + +if (isset($_POST['addlimit'])) +{ + if ($sql->db_Select('generic','gen_id',"gen_type = 'download_limit' AND gen_datestamp = {$_POST['newlimit_class']}")) + { + $message = DOWLAN_116; + } + else + { + $vals = array(); + $vals['gen_type'] = 'download_limit'; + foreach(array('newlimit_class','new_bw_num','new_bw_days','new_count_num','new_count_days') as $k => $lName) + { + $vals[$targetFields[$k]] = intval($_POST[$lName]); + } + $valString = implode(',',$vals); + if ($sql->db_Insert('generic',$vals)) + { + $message = DOWLAN_117; + $admin_log->log_event('DOWNL_09',$valString,E_LOG_INFORMATIVE,''); + } + else + { + $message = DOWLAN_118; + } + unset($vals); + } +} + + +if (isset($_POST['updatelimits'])) +{ + + if ($pref['download_limits'] != $_POST['download_limits']) + { + $pref['download_limits'] = ($_POST['download_limits'] == 'on') ? 1 : 0; + save_prefs(); + $message .= DOWLAN_126."
"; + } + foreach(array_keys($_POST['count_num']) as $idLim) + { + $idLim = intval($idLim); + if (!$_POST['count_num'][$idLim] && !$_POST['count_days'][$idLim] && !$_POST['bw_num'][$idLim] && !$_POST['bw_days'][$idLim]) + { + //All entries empty - Remove record + if ($sql->db_Delete('generic',"gen_id = {$idLim}")) + { + $message .= $idLim." - ".DOWLAN_119."
"; + $admin_log->log_event('DOWNL_11','ID: '.$idLim,E_LOG_INFORMATIVE,''); + } + else + { + $message .= $idLim." - ".DOWLAN_120."
"; + } + } + else + { + $vals = array(); + foreach(array('bw_num','bw_days','count_num','count_days') as $k => $lName) + { + $vals[$targetFields[$k+1]] = intval($_POST[$lName][$idLim]); + } + $valString = implode(',',$vals); + $sql->db_UpdateArray('generic',$vals," WHERE gen_id = {$idLim}"); + $admin_log->log_event('DOWNL_10',$idLim.', '.$valString,E_LOG_INFORMATIVE,''); + $message .= $idLim." - ".DOWLAN_121."
"; + unset($vals); + } + } +} + + +if (isset($_POST['submit_mirror'])) +{ + $adminDownload->submit_mirror($subAction, $id); +} + + +if ($action == "mirror") +{ + $adminDownload->show_existing_mirrors(); +} + + +if ($action == "dlm") +{ + $action = "create"; + $id = $subAction; + $subAction = "dlm"; +} + + +if ($action == "create") +{ + $adminDownload->create_download($subAction, $id); +} + + +if ($delete == 'category') +{ + if (admin_update($sql->db_Delete('download_category', 'download_category_id='.$del_id), 'delete', DOWLAN_49." #".$del_id." ".DOWLAN_36)) + { + $sql->db_Delete('download_category', 'download_category_parent='.$del_id); + $admin_log->log_event('DOWNL_04',$del_id,E_LOG_INFORMATIVE,''); + } +} + + +if ($action == 'cat') +{ + $adminDownload->show_categories($subAction, $id); +} + + +if ($delete == 'main') +{ + $result = $sql->db_Delete('download', 'download_id='.$del_id); + if ($result) + { + // Process triggers before calling admin_update so trigger messages can be shown + $data = array('method'=>'delete', 'table'=>'download', 'id'=>$del_id, 'plugin'=>'download', 'function'=>'delete_download'); + $hooks = $e107->e_event->triggerHook($data); + require_once(e_HANDLER."message_handler.php"); + $emessage = &eMessage::getInstance(); + $emessage->add($hooks, E_MESSAGE_SUCCESS); + + admin_update($result, 'delete', DOWLAN_27." #".$del_id." ".DOWLAN_36); + + $admin_log->log_event('DOWNL_07',$del_id,E_LOG_INFORMATIVE,''); + admin_purge_related('download', $del_id); + $e_event->trigger('dldelete', $del_id); + } + unset($subAction, $id); +} + +if (isset($message)) +{ + $ns->tablerender("", "
".$message."
"); +} + + +if ($from === "maint" && isset($_POST['submit_download'])) +{ // Return to one of the maintanence pages after submitting the create/edit form + $action = $from; + $subAction = $maintPage; +} + +if (!e_QUERY || $action == "main") +{ + $text = $adminDownload->show_filter_form($action, $subAction, $id, $from, $amount); + $text .= $adminDownload->show_existing_items($action, $subAction, $id, $from, $amount); + $ns->tablerender(DOWLAN_7, $text); +} + + + + +if ($action == "opt") +{ + $adminDownload->show_options(); +} + +if ($action == 'maint') +{ + global $pref, $ns; + switch ($_POST['dl_maint']) + { + case 'duplicates': + { + $title = DOWLAN_166; + $query = 'SELECT GROUP_CONCAT(d.download_id SEPARATOR ",") as gc, d.download_id, d.download_name, d.download_url, dc.download_category_name + FROM #download as d + LEFT JOIN #download_category AS dc ON dc.download_category_id=d.download_category + GROUP BY d.download_url + HAVING COUNT(d.download_id) > 1 + '; + $text = ""; + $count = $sql->db_Select_gen($query); + $foundSome = false; + if ($count) { + $currentURL = ""; + while($row = $sql->db_Fetch()) { + if (!$foundSome) { + $text .= $rs->form_open("post", e_SELF."?".e_QUERY, "myform"); + $text .= ''; + $text .= ''; + $text .= ''; + $text .= ''; + $text .= ''; + $text .= ''; + $text .= ''; + $text .= ''; + $foundSome = true; + } + $query = "SELECT d.*, dc.* FROM `#download` AS d + LEFT JOIN `#download_category` AS dc ON dc.download_category_id=d.download_category + WHERE download_id IN (".$row['gc'].") + ORDER BY download_id ASC"; + $count = $sql2->db_Select_gen($query); + while($row = $sql2->db_Fetch()) { + $text .= ''; + if ($currentURL != $row['download_url']) { + $text .= ''; + $currentURL = $row['download_url']; + } else { + $text .= ''; + } + $text .= ''; + $text .= "'; + $text .= ''; + $text .= ''; + $text .= ''; + } + } + } + if ($foundSome) { + $text .= '
'.DOWLAN_13.''.DOWLAN_67.''.DOWLAN_27.''.DOWLAN_11.''.LAN_OPTIONS.'
'.$row['download_url'].'*'.$row['download_id'].'".$row['download_name'].''.$row['download_category_name'].' + '.ADMIN_EDIT_ICON.' + toJS(DOWLAN_33.' [ID: '.$row["download_id"].' ]').'") \'/> +
'; + } + else + { + $text = DOWLAN_172; + } + break; + } + case 'orphans': + { + $title = DOWLAN_167; + $text = ""; + require_once(e_HANDLER."file_class.php"); + $efile = new e_file(); + $files = $efile->get_files(e_DOWNLOAD); + $foundSome = false; + foreach($files as $file) { + if (0 == $sql->db_Count('download', '(*)', " WHERE download_url='".$file['fname']."'")) { + if (!$foundSome) { + $text .= $rs->form_open("post", e_SELF."?".e_QUERY, "myform"); + $text .= ''; + $text .= ''; + $text .= ''; + $text .= ''; + $text .= ''; + $text .= ''; + $text .= ''; + $foundSome = true; + } + $filesize = (is_readable(e_DOWNLOAD.$row['download_url']) ? $e107->parseMemorySize(filesize(e_DOWNLOAD.$file['fname'])) : DOWLAN_181); + $filets = (is_readable(e_DOWNLOAD.$row['download_url']) ? $gen->convert_date(filectime(e_DOWNLOAD.$file['fname']), "long") : DOWLAN_181); + $text .= ''; + $text .= ''; + $text .= ''; + $text .= ''; +//TODO $text .= ''; +//TODO $text .= ''; + } + } + if ($foundSome) { + $text .= '
'.DOWLAN_13.''.DOWLAN_182.''.DOWLAN_170.''.LAN_OPTIONS.'
'.$file['fname'].''.$filets.''.$filesize.' +//TODO '.E_16_CREATE.' +//TODO toJS(DOWLAN_173.' [ '.$file["fname"].' ]').'") \'/> +//TODO
'; + } + else + { + $text = DOWLAN_174; + } + break; + } + case 'missing': + { + $title = DOWLAN_168; + $text = ""; + $query = "SELECT d.*, dc.* FROM `#download` AS d LEFT JOIN `#download_category` AS dc ON dc.download_category_id=d.download_category"; + $count = $sql->db_Select_gen($query); + $foundSome = false; + if ($count) { + while($row = $sql->db_Fetch()) { + if (!is_readable(e_DOWNLOAD.$row['download_url'])) { + if (!$foundSome) { + $text .= $rs->form_open("post", e_SELF."?".e_QUERY, "myform"); + $text .= ''; + $text .= ''; + $text .= ''; + $text .= ''; + $text .= ''; + $text .= ''; + $text .= ''; + $text .= ''; + $foundSome = true; + } + $text .= ''; + $text .= ''; + $text .= "'; + $text .= ''; + $text .= ''; + $text .= ''; + $text .= ''; + } + } + } + if ($foundSome) { + $text .= '
'.DOWLAN_67.''.DOWLAN_27.''.DOWLAN_11.''.DOWLAN_13.''.LAN_OPTIONS.'
'.$row['download_id'].'".$row['download_name'].''.$row['download_category_name'].''.$row['download_url'].' + '.ADMIN_EDIT_ICON.' + toJS(DOWLAN_33.' [ID: '.$row["download_id"].' ]').'") \'/> +
'; + } + else + { + $text = DOWLAN_172; + } + break; + } + case 'inactive': + { + $title = DOWLAN_169; + $text = ""; + $query = "SELECT d.*, dc.* FROM `#download` AS d LEFT JOIN `#download_category` AS dc ON dc.download_category_id=d.download_category WHERE download_active=0"; + $count = $sql->db_Select_gen($query); + $foundSome = false; + if ($count) { + while($row = $sql->db_Fetch()) { + if (!$foundSome) { + $text .= $rs->form_open("post", e_SELF."?".e_QUERY, "myform"); + $text .= ''; + $text .= ''; + $text .= ''; + $text .= ''; + $text .= ''; + $text .= ''; + $text .= ''; + $text .= ''; + $foundSome = true; + } + $text .= ''; + $text .= ''; + $text .= "'; + $text .= ''; + if (strlen($row['download_url']) > 0) { + $text .= ''; + } else { + $mirrorArray = download::makeMirrorArray($row['download_mirror'], TRUE); + $text .= ''; + } + $text .= ''; + $text .= ''; + } + } + if ($foundSome) { + $text .= '
'.DOWLAN_67.''.DOWLAN_27.''.DOWLAN_11.''.DOWLAN_13.''.LAN_OPTIONS.'
'.$row['download_id'].'".$row['download_name'].''.$row['download_category_name'].''.$row['download_url'].''; + foreach($mirrorArray as $mirror) { + $text .= $mirror['url'].'
'; + } + $text .= '
+ '.ADMIN_EDIT_ICON.' + toJS(DOWLAN_33.' [ID: '.$row["download_id"].' ]').'") \'/> +
'; + } + else + { + $text = DOWLAN_172; + } + break; + } + case 'nocategory': + { + $title = DOWLAN_178; + $text = ""; + $query = "SELECT * FROM `#download` WHERE download_category=0"; + $count = $sql->db_Select_gen($query); + $foundSome = false; + if ($count) { + while($row = $sql->db_Fetch()) { + if (!$foundSome) { + $text .= $rs->form_open("post", e_SELF."?".e_QUERY, "myform"); + $text .= ''; + $text .= ''; + $text .= ''; + $text .= ''; + $text .= ''; + $text .= ''; + $text .= ''; + $foundSome = true; + } + $text .= ''; + $text .= ''; + $text .= "'; + if (strlen($row['download_url']) > 0) { + $text .= ''; + } else { + $mirrorArray = download::makeMirrorArray($row['download_mirror'], TRUE); + $text .= ''; + } + $text .= ''; + $text .= ''; + } + } + if ($foundSome) { + $text .= '
'.DOWLAN_67.''.DOWLAN_27.''.DOWLAN_13.''.LAN_OPTIONS.'
'.$row['download_id'].'".$row['download_name'].''.$row['download_url'].''; + foreach($mirrorArray as $mirror) { + $text .= $mirror['url'].'
'; + } + $text .= '
+ '.ADMIN_EDIT_ICON.' + toJS(DOWLAN_33.' [ID: '.$row["download_id"].' ]').'") \'/> +
'; + } + else + { + $text = DOWLAN_172; + } + break; + } + case 'filesize': + { + $title = DOWLAN_170; + $text = ""; + $query = "SELECT d.*, dc.* FROM `#download` AS d LEFT JOIN `#download_category` AS dc ON dc.download_category_id=d.download_category WHERE d.download_url<>''"; + $count = $sql->db_Select_gen($query); + $foundSome = false; + if ($count) { + while($row = $sql->db_Fetch()) { + if (is_readable(e_DOWNLOAD.$row['download_url'])) { + $filesize = filesize(e_DOWNLOAD.$row['download_url']); + if ($filesize <> $row['download_filesize']) { + if (!$foundSome) { + $text .= $rs->form_open("post", e_SELF."?".e_QUERY, "myform"); + $text .= ''; + $text .= ''; + $text .= ''; + $text .= ''; + $text .= ''; + $text .= ''; + $text .= ''; + $text .= ''; + $text .= ''; + $foundSome = true; + } + $text .= ''; + $text .= ''; + $text .= "'; + $text .= ''; + $text .= ''; + $text .= ''; + $text .= ''; + $text .= ''; + } + } + } + } + if ($foundSome) { + $text .= '
'.DOWLAN_67.''.DOWLAN_27.''.DOWLAN_11.''.DOWLAN_13.''.DOWLAN_180.''.LAN_OPTIONS.'
'.$row['download_id'].'".$row['download_name'].''.$row['download_category_name'].''.$row['download_url'].''.$row['download_filesize'].' / '; + $text .= $filesize; + $text .= ' + '.ADMIN_EDIT_ICON.' + toJS(DOWLAN_33.' [ID: '.$row["download_id"].' ]').'") \'/> +
'; + } + else + { + $text = DOWLAN_172; + } + break; + } + case 'log': + { + $text = "log - view manage download history log"; + header('location: '.e_ADMIN.'admin_log.php?downlog'); + exit(); + break; + } + default: + { + $title = DOWLAN_193; + $text = DOWLAN_179; + $eform = new e_form(); + $text = " +
+
+ ".DOWLAN_10." + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
".DOWLAN_166." + ".$eform->radio('dl_maint', 'duplicates').$eform->label(DOWLAN_185, 'dl_maint', 'duplicates')." +
".DOWLAN_167." + ".$eform->radio('dl_maint', 'orphans').$eform->label(DOWLAN_186, 'dl_maint', 'orphans')." +
".DOWLAN_168." + ".$eform->radio('dl_maint', 'missing').$eform->label(DOWLAN_187, 'dl_maint', 'missing')." +
".DOWLAN_169." + ".$eform->radio('dl_maint', 'inactive').$eform->label(DOWLAN_188, 'dl_maint', 'inactive')." +
".DOWLAN_178." + ".$eform->radio('dl_maint', 'nocategory').$eform->label(DOWLAN_189, 'dl_maint', 'nocategory')." +
".DOWLAN_170." + ".$eform->radio('dl_maint', 'filesize').$eform->label(DOWLAN_190, 'dl_maint', 'filesize')." +
".DOWLAN_171." + ".$eform->radio('dl_maint', 'log').$eform->label(DOWLAN_191, 'dl_maint', 'log')." +
+
+ ".$eform->admin_button('trigger_db_execute', DOWLAN_192, 'execute')." +
+
+
+ "; + } + } + $ns->tablerender(DOWLAN_165.$title, $text); +} + + +if ($action == 'limits') +{ + if ($sql->db_Select('userclass_classes','userclass_id, userclass_name')) + { + $classList = $sql->db_getList(); + } + if ($sql->db_Select("generic", "gen_id as limit_id, gen_datestamp as limit_classnum, gen_user_id as limit_bw_num, gen_ip as limit_bw_days, gen_intdata as limit_count_num, gen_chardata as limit_count_days", "gen_type = 'download_limit'")) + { + while($row = $sql->db_Fetch()) + { + $limitList[$row['limit_classnum']] = $row; + } + } + $txt = " +
+ + + + + + + + + + + "; + + foreach($limitList as $row) + { + $txt .= " + + + + + + + "; + } + + $txt .= " + + + + + + + + + + + + + + + "; + + $txt .= "
+ "; + if ($pref['download_limits'] == 1) + { + $chk = "checked = 'checked'"; + } + else + { + $chk = ""; + } + + $txt .= " + ".DOWLAN_125." +
".DOWLAN_67."".DOWLAN_113."".DOWLAN_107."".DOWLAN_108."
".$row['limit_id']."".r_userclass_name($row['limit_classnum'])." + ".DOWLAN_109." + ".DOWLAN_110." + + ".DOWLAN_111." ".DOWLAN_109." + ".DOWLAN_110." +
+ +


".r_userclass("newlimit_class", 0, "off", "guest, member, admin, classes, language")." + ".DOWLAN_109." + ".DOWLAN_110." + + ".DOWLAN_111." ".DOWLAN_109." + ".DOWLAN_110." +
+ +
"; + + $ns->tablerender(DOWLAN_112, $txt); + require_once(e_ADMIN.'footer.php'); + exit; +} + +require_once(e_ADMIN."footer.php"); +exit; + +function admin_download_adminmenu($parms) +{ + global $action,$subAction; + if ($action == "") { + $action = "main"; + } + $var['main']['text'] = DOWLAN_29; + $var['main']['link'] = e_SELF; + $var['create']['text'] = DOWLAN_30; + $var['create']['link'] = e_SELF."?create"; + $var['cat']['text'] = DOWLAN_31; + $var['cat']['link'] = e_SELF."?cat"; + $var['cat']['perm'] = "Q"; + $var['opt']['text'] = LAN_OPTIONS; + $var['opt']['link'] = e_SELF."?opt"; + $var['maint']['text'] = DOWLAN_165; + $var['maint']['link'] = e_SELF."?maint"; + $var['limits']['text'] = DOWLAN_112; + $var['limits']['link'] = e_SELF."?limits"; + $var['mirror']['text'] = DOWLAN_128; + $var['mirror']['link'] = e_SELF."?mirror"; + e_admin_menu(DOWLAN_32, $action, $var); + + unset($var); + if ($action == "" || $action == "main") { + $var['1']['text'] = "//TODO"; + $var['1']['link'] = ""; + e_admin_menu(DOWLAN_184, $subAction, $var); + } +} +?> \ No newline at end of file