|
From: <ir...@us...> - 2013-03-12 10:40:02
|
Revision: 11213
http://sourceforge.net/p/xoops/svn/11213
Author: irmtfan
Date: 2013-03-12 10:39:59 +0000 (Tue, 12 Mar 2013)
Log Message:
-----------
add file manager to delete/rename/copy/merge/zip/export-csv log files
add getModules function, add check all items in views block
Modified Paths:
--------------
XoopsModules/userlog/trunk/userlog/admin/logs.php
XoopsModules/userlog/trunk/userlog/admin/menu.php
XoopsModules/userlog/trunk/userlog/admin/setting.php
XoopsModules/userlog/trunk/userlog/admin/stats.php
XoopsModules/userlog/trunk/userlog/blocks/views.php
XoopsModules/userlog/trunk/userlog/class/log.php
XoopsModules/userlog/trunk/userlog/class/userlog.php
XoopsModules/userlog/trunk/userlog/docs/changelog.txt
XoopsModules/userlog/trunk/userlog/language/english/admin.php
XoopsModules/userlog/trunk/userlog/language/english/help/help.html
XoopsModules/userlog/trunk/userlog/xoops_version.php
Added Paths:
-----------
XoopsModules/userlog/trunk/userlog/admin/file.php
XoopsModules/userlog/trunk/userlog/templates/userlog_admin_file.html
Added: XoopsModules/userlog/trunk/userlog/admin/file.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/admin/file.php (rev 0)
+++ XoopsModules/userlog/trunk/userlog/admin/file.php 2013-03-12 10:39:59 UTC (rev 11213)
@@ -0,0 +1,125 @@
+<?php
+/*
+ You may not change or alter any portion of this comment or credits
+ of supporting developers from this source code or any supporting source code
+ which is considered copyrighted (c) material of the original comment or credit authors.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+*/
+/**
+ * userlog module
+ *
+ * @copyright The XOOPS Project http://sourceforge.net/projects/xoops/
+ * @license GNU GPL 2 (http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)
+ * @package userlog admin
+ * @since 1
+ * @author irmtfan (ir...@ya...)
+ * @author The XOOPS Project <www.xoops.org> <www.xoops.ir>
+ * @version $Id: file.php 1 2013-02-26 16:25:04Z irmtfan $
+ */
+
+include_once dirname(__FILE__) . '/admin_header.php';
+include_once XOOPS_ROOT_PATH . '/class/pagenav.php';
+xoops_cp_header();
+$Userlog = Userlog::getInstance(false);
+$loglogObj = UserlogLog::getInstance();
+
+$indexAdmin = new ModuleAdmin();
+
+// Where do we start ?
+$file = UserlogRequest::getArray('file', $Userlog->getConfig("file"));
+$opentry = UserlogRequest::getString('op', '');
+$filename = UserlogRequest::getString('filename', '');
+$confirm = UserlogRequest::getString('confirm',0);
+$totalFiles = count($file);
+if(!empty($opentry) && ($confirm == 0 || $totalFiles == 0)) {
+ redirect_header("file.php", 5, sprintf(_AM_USERLOG_ERROR,""));
+}
+switch ($opentry) {
+ case "del":
+ if ($deleteFiles = $loglogObj->deleteFiles($file)) {
+ $msgDel = sprintf(_AM_USERLOG_FILE_DELETE_SUCCESS, $deleteFiles) . "<br\>" . implode("<br\>",$loglogObj->getErrors());
+ redirect_header("file.php", 5, $msgDel);
+ }
+ redirect_header("file.php", 5, sprintf(_AM_USERLOG_ERROR,implode("<br\>",$loglogObj->getErrors())));
+ break;
+ case "rename":
+ // only one file. 0 file or more than one file => error
+ if ($totalFiles != 1) {
+ redirect_header("file.php", 5, sprintf(_AM_USERLOG_ERROR,_AM_USERLOG_FILE_SELECT_ONE));
+ }
+ if ($newFile = $loglogObj->renameFile($file[0], $filename)) {
+ redirect_header("file.php", 700, sprintf(_AM_USERLOG_FILE_RENAME_SUCCESS,$file[0], $newFile));
+ }
+ redirect_header("file.php", 5, sprintf(_AM_USERLOG_ERROR,implode("<br\>",$loglogObj->getErrors())));
+ break;
+ case "copy":
+ // only one file. 0 file or more than one file => error
+ if ($totalFiles != 1) {
+ redirect_header("file.php", 5, sprintf(_AM_USERLOG_ERROR,_AM_USERLOG_FILE_SELECT_ONE));
+ }
+ if ($newFile = $loglogObj->copyFile($file[0], $filename)) {
+ redirect_header("file.php", 700, sprintf(_AM_USERLOG_FILE_COPY_SUCCESS,$file[0], $newFile));
+ }
+ redirect_header("file.php", 5, sprintf(_AM_USERLOG_ERROR,implode("<br\>",$loglogObj->getErrors())));
+ break;
+ case "merge":
+ // if "all"
+ if ($file[0] == "all") {
+ list($allFiles,$totalFiles) = $Userlog->getAllLogFiles();
+ }
+ if ($mergeFile = $loglogObj->mergeFiles($file, $filename)) {
+ redirect_header("file.php", 5, sprintf(_AM_USERLOG_FILE_MERGE_SUCCESS, $totalFiles,$mergeFile));
+ }
+ redirect_header("file.php", 5, sprintf(_AM_USERLOG_ERROR,implode("<br\>",$loglogObj->getErrors())));
+ break;
+ case "zip":
+ if ($zipFile = $loglogObj->zipFiles($file, $filename)) {
+ $msgZip = sprintf(_AM_USERLOG_FILE_ZIP_SUCCESS,$totalFiles, $zipFile ) . "<br\>" . implode("<br\>",$loglogObj->getErrors());
+ redirect_header("file.php", 5, $msgZip);
+ }
+ redirect_header("file.php", 5, sprintf(_AM_USERLOG_ERROR, implode("<br\>",$loglogObj->getErrors())));
+ break;
+ case "export-csv":
+ $logsetObj = UserlogSetting::getInstance();
+ $headers = $logsetObj->getOptions("","title");
+ unset($headers["store_db"], $headers["store_file"], $headers["views"]);
+ if($csvFile = $loglogObj->exportFilesToCsv($file, $headers, $filename,";")) {
+ $msgCsv = sprintf(_AM_USERLOG_FILE_EXOPORT_SUCCESS,$totalFiles, $csvFile );
+ redirect_header("file.php", 5, $msgCsv);
+ }
+ redirect_header("file.php", 5, sprintf(_AM_USERLOG_ERROR, implode("<br\>",$loglogObj->getErrors())));
+ break;
+}
+$form = new XoopsThemeForm(_AM_USERLOG_ADMENU_FILE,'filemanager','file.php', 'post');
+$fileEl = $loglogObj->buildFileSelectEle($file, true, 10);// multiselect = true, size=10
+$form->addElement($fileEl);
+$actionEl = new XoopsFormSelect(_AM_USERLOG_FILE_ACTION,"op", $opentry);
+$actionEl->addOptionArray(array("del"=>_DELETE,
+ "rename"=>_AM_USERLOG_FILE_RENAME,
+ "copy"=>_AM_USERLOG_FILE_COPY,
+ "merge"=>_AM_USERLOG_FILE_MERGE,
+ "zip" =>_AM_USERLOG_FILE_ZIP,
+ "export-csv"=>_AM_USERLOG_FILE_EXPORT_CSV
+ ));
+$actionEl->setExtra("onchange=\"document.forms.filemanager.filename.className = ''; if(this.value == 'del') { document.forms.filemanager.filename.className = 'hidden';}\"");
+$form->addElement($actionEl);
+$filenameEl = new XoopsFormText(_AM_USERLOG_FILE_FILENAME, "filename", 50, 255, '');
+$filenameEl->setExtra("Class='hidden'");
+$filenameEl->setDescription(_AM_USERLOG_FILE_FILENAME_DSC);
+$form->addElement($filenameEl);
+$submitEl = new XoopsFormButton(_SUBMIT, 'submitfilemanager', _SUBMIT, 'submit');
+$form->addElement($submitEl);
+$confirmEl = new XoopsFormHidden("confirm",0);
+$confirmEl->customValidationCode[]="if(confirm('" . _AM_USERLOG_FILE_CONFIRM . "' + ' action=' + myform.op.value)) {myform.confirm.value = 1;} else {return false;};";
+$form->addElement($confirmEl);
+$GLOBALS['xoopsTpl']->assign('form', $form->render());
+$GLOBALS['xoopsTpl']->assign('logo',$indexAdmin->addNavigation('file.php'));
+// template
+$template_main = "userlog_admin_file.html";
+if ( !empty($template_main) ) {
+ $GLOBALS['xoopsTpl']->display("db:{$template_main}");
+}
+xoops_cp_footer();
\ No newline at end of file
Modified: XoopsModules/userlog/trunk/userlog/admin/logs.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/admin/logs.php 2013-03-12 02:58:29 UTC (rev 11212)
+++ XoopsModules/userlog/trunk/userlog/admin/logs.php 2013-03-12 10:39:59 UTC (rev 11213)
@@ -33,7 +33,7 @@
$options = UserlogRequest::getArray("options");
$engine = UserlogRequest::getString('engine',$Userlog->getConfig("engine"));
-$file = UserlogRequest::getArray('file', '');
+$file = UserlogRequest::getArray('file', $Userlog->getConfig("file"));
$opentry = UserlogRequest::getString('op', '', 'post');
$log_id = UserlogRequest::getArray('log_id', 0 , 'post');
$logsetObj = UserlogSetting::getInstance();
Modified: XoopsModules/userlog/trunk/userlog/admin/menu.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/admin/menu.php 2013-03-12 02:58:29 UTC (rev 11212)
+++ XoopsModules/userlog/trunk/userlog/admin/menu.php 2013-03-12 10:39:59 UTC (rev 11213)
@@ -47,6 +47,11 @@
$adminmenu[$i]["icon"] = '../../' . $pathIcon32 . '/content.png';
$i++;
+$adminmenu[$i]['title'] = _AM_USERLOG_ADMENU_FILE;
+$adminmenu[$i]['link'] = "admin/file.php";
+$adminmenu[$i]["icon"] = '../../' . $pathIcon32 . '/compfile.png';
+
+$i++;
$adminmenu[$i]['title'] = _AM_USERLOG_ADMENU_STATS;
$adminmenu[$i]['link'] = "admin/stats.php";
$adminmenu[$i]["icon"] = '../../' . $pathIcon32 . '/stats.png';
Modified: XoopsModules/userlog/trunk/userlog/admin/setting.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/admin/setting.php 2013-03-12 02:58:29 UTC (rev 11212)
+++ XoopsModules/userlog/trunk/userlog/admin/setting.php 2013-03-12 10:39:59 UTC (rev 11213)
@@ -121,10 +121,7 @@
case "default":
default:
// get all dirnames for scope
- $module_handler =& xoops_gethandler('module');
- $criteria = new CriteriaCompo();
- $criteria->add(new Criteria('isactive', 1));
- $modules = $module_handler->getObjects($criteria, true); // id_as_key = true, asobject = false
+ $modules = $Userlog->getModules();
foreach($modules as $module) {
$dirNames[$module->dirname()] = $module->name();
}
Modified: XoopsModules/userlog/trunk/userlog/admin/stats.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/admin/stats.php 2013-03-12 02:58:29 UTC (rev 11212)
+++ XoopsModules/userlog/trunk/userlog/admin/stats.php 2013-03-12 10:39:59 UTC (rev 11213)
@@ -51,12 +51,7 @@
$criteria = new CriteriaCompo();
$criteria->setGroupby("module");
$moduleViews = $Userlog->getHandler('log')->getCounts($criteria);
-$module_handler =& xoops_gethandler('module');
-$criteria = new CriteriaCompo();
-foreach(array_keys($moduleViews) as $mDir) {
- $criteria->add(new Criteria('dirname', $mDir), "OR");
-}
-$modulesObj = $module_handler->getObjects($criteria, true); // id_as_key = true, asobject = false
+$modulesObj = $Userlog->getModules(array_keys($moduleViews));
foreach($modulesObj as $mObj) {
$mDir = $mObj->dirname();
$indexAdmin->addInfoBoxLine(_AM_USERLOG_VIEW_MODULE,
Modified: XoopsModules/userlog/trunk/userlog/blocks/views.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/blocks/views.php 2013-03-12 02:58:29 UTC (rev 11212)
+++ XoopsModules/userlog/trunk/userlog/blocks/views.php 2013-03-12 10:39:59 UTC (rev 11213)
@@ -111,12 +111,7 @@
list($loglogsObj, $itemViews) = $Userlog->getHandler('log')->getLogsCounts($criteria,$fields);
$criteria->setGroupby("module");
$moduleViews = $Userlog->getHandler('log')->getCounts($criteria);
- $module_handler =& xoops_gethandler('module');
- $criteria = new CriteriaCompo();
- foreach(array_keys($moduleViews) as $module) {
- $criteria->add(new Criteria('dirname', $module), "OR");
- }
- $modules = $module_handler->getObjects($criteria, true); // id_as_key = true, asobject = false
+ $modules = $Userlog->getModules(array_keys($moduleViews));
foreach($modules as $module) {
$moduleNames[$module->dirname()] = $module->name();
}
@@ -177,6 +172,8 @@
$viewsEle = new XoopsFormCheckBox(_MB_USERLOG_BLOCK_ITEMS, "options[{$i}][]", $options_views);
$viewsEle->columns = 3;
$viewsEle->addOptionArray($hasviews);
+ $check_all = _ALL . ": <input type=\"checkbox\" name=\"item_check\" id=\"item_check\" value=\"1\" onclick=\"xoopsCheckGroup('blockform', 'item_check','options[{$i}][]');\" />"; // blockform is the main form
+ $viewsEle = new XoopsFormLabel(_MB_USERLOG_BLOCK_ITEMS, $check_all ."<br\>". $viewsEle->render());
$viewsEle->setDescription(_MB_USERLOG_BLOCK_ITEMS_DSC);
$i++;
Modified: XoopsModules/userlog/trunk/userlog/class/log.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/class/log.php 2013-03-12 02:58:29 UTC (rev 11212)
+++ XoopsModules/userlog/trunk/userlog/class/log.php 2013-03-12 10:39:59 UTC (rev 11213)
@@ -154,7 +154,7 @@
if (filesize($log_file) > $this->userlog->getConfig('maxlogfilesize')) {
$old_file = $log_file_name ."_".date('Y-m-d_H-i-s') . "." . $this->userlog->logext;
if(!$result=rename($log_file, $old_file)) {
- $this->setErrors('ERROR renaming ({$log_file_name})');
+ $this->setErrors("ERROR renaming ({$log_file})");
return false;
}
}
@@ -164,7 +164,7 @@
// force to create file if not exist
if(!$fileHandler->exists()) {
$fileHandler->XoopsFileHandler($log_file, true); // create file and folder
- $this->setErrors('File was not exist create file ({$log_file_name})');
+ $this->setErrors("File was not exist create file ({$log_file})");
// update the new file in database
$statsObj = UserlogStats::getInstance();
$statsObj->update("file", 0, 0, false, $log_file); // value = 0 to not auto increment
@@ -179,16 +179,26 @@
}
$data .= json_encode($tolog, (phpversion() > "5.4.0") ? JSON_UNESCAPED_UNICODE : 0);
if ($fileHandler->open("a") == false) {
- $this->setErrors('Cannot open file ({$log_file_name})');
+ $this->setErrors("Cannot open file ({$log_file})");
return false;
}
if ($fileHandler->write($data) == false) {
- $this->setErrors('Cannot write to file ({$log_file_name})');
+ $this->setErrors("Cannot write to file ({$log_file})");
return false;
}
$fileHandler->close();
return true;
}
+ public function exportFilesToCsv($log_file, $headers, $csvNamePrefix="list_", $delimiter=";")
+ {
+ list($logs, $totalLogs) = $this->getLogsFromFiles($log_file);
+ $logs = $this->arrayToDisplay($logs);
+ $csvNamePrefix = basename($csvNamePrefix);
+ if($csvFile = $this->exportLogsToCsv($logs, $headers, $csvNamePrefix . "from_file_total_" . $totalLogs ,$delimiter)) {
+ return $csvFile;
+ }
+ return false;
+ }
public function exportLogsToCsv($logs, $headers, $csvNamePrefix="list_", $delimiter=";")
{
$csvFile = $this->userlog->getConfig("logfilepath") . "/" . USERLOG_DIRNAME . "/export/csv/" . $csvNamePrefix . "_" . date('Y-m-d_H-i-s') . ".csv";
@@ -198,10 +208,10 @@
// force to create file if not exist
if(!$fileHandler->exists()) {
$fileHandler->XoopsFileHandler($csvFile, true); // create file and folder
- $this->setErrors('File was not exist create file ({$csvFile})');
+ $this->setErrors("File was not exist create file ({$csvFile})");
}
if ($fileHandler->open("a") == false) {
- $this->setErrors('Cannot open file ({$csvFile})');
+ $this->setErrors("Cannot open file ({$csvFile})");
return false;
}
if(!fputcsv($fileHandler->handle, $headers, $delimiter)) return false;
@@ -223,7 +233,7 @@
if (!is_array($logArr) || !array_key_exists("log_id", $logArr)) continue;
foreach ($logArr as $option=>$logvalue) {
// value array to string
- $logs[$id][$option] = (is_array($logvalue) && count($logvalue) > 0) ? var_export($logvalue, true) : $logvalue;
+ $logs[$id][$option] = (is_array($logvalue)) ? ( (count($logvalue) > 0) ? var_export($logvalue, true) : '' ) : $logvalue;
}
}
// START Criteria in array
@@ -348,7 +358,39 @@
}
return $logs;
}
-
+ public function mergeFiles($log_files = array(), $mergeFileName = null)
+ {
+ $logs = array();
+ $logsStr = $this->readFiles($log_files);
+ $data = implode("\n",$logsStr);
+ $mergeFile = $this->userlog->getConfig('logfilepath') .'/'. USERLOG_DIRNAME . '/';
+ $mergeFileName = basename($mergeFileName, "." . $this->userlog->logext);
+ if (empty($mergeFileName)) {
+ $mergeFile .= $this->userlog->getConfig('logfilename') . "_merge_" . count($log_files) . "_files_" . date('Y-m-d_H-i-s');
+ } else {
+ $mergeFile .= $mergeFileName;
+ }
+ $mergeFile .= "." . $this->userlog->logext;
+
+ // file create/open/write
+ $fileHandler = XoopsFile::getHandler();
+ $fileHandler->XoopsFileHandler($mergeFile, false); //to see if file exist
+ if($fileHandler->exists()) {
+ $this->setErrors("file ({$mergeFile}) is exist");
+ return false;
+ }
+ $fileHandler->XoopsFileHandler($mergeFile, true); // create file and folder
+ if ($fileHandler->open("a") == false) {
+ $this->setErrors("Cannot open file ({$mergeFile})");
+ return false;
+ }
+ if ($fileHandler->write($data) == false) {
+ $this->setErrors("Cannot write to file ({$mergeFile})");
+ return false;
+ }
+ $fileHandler->close();
+ return $mergeFile;
+ }
public function readFile($log_file = null)
{
if (!$log_file) {
@@ -359,23 +401,152 @@
// not create file if not exist
$fileHandler->XoopsFileHandler($log_file, false);
if (!$fileHandler->exists()) {
- $this->setErrors('Cannot open file ({$log_file_name})');
+ $this->setErrors("Cannot open file ({$log_file})");
return false;
}
if (($data = $fileHandler->read()) == false) {
- $this->setErrors('Cannot read file ({$log_file_name})');
+ $this->setErrors("Cannot read file ({$log_file})");
return false;
}
$logs = explode("\n",$data);
return $logs;
}
- public function buildFileSelectEle($currentFile = null, $multi = false)
+ public function deleteFiles($log_files = array())
{
+ $deletedFiles = 0;
+ if (count($log_files) == 0) {
+ $this->setErrors("No file to delete");
+ return false;
+ }
+ // file open/read
+ $fileHandler = XoopsFile::getHandler();
+ foreach($log_files as $file) {
+ $fileHandler->XoopsFileHandler($file, false);
+ if (!$fileHandler->exists()) {
+ $this->setErrors("({$file}) is a folder or is not exist");
+ continue;
+ }
+ if (($ret = $fileHandler->delete()) == false) {
+ $this->setErrors("Cannot delete ({$file})");
+ continue;
+ }
+ $deletedFiles++;
+ }
+ return $deletedFiles;
+ }
+ public function renameFile($log_file = null, $newFileName = null)
+ {
+ if (!is_string($log_file)) {
+ $this->setErrors(_AM_USERLOG_FILE_SELECT_ONE);
+ return false;
+ }
+ // check if file exist
+ $fileHandler = XoopsFile::getHandler();
+ $fileHandler->XoopsFileHandler($log_file, false);
+ if (!$fileHandler->exists()) {
+ $this->setErrors("({$log_file}) is a folder or is not exist");
+ return false;
+ }
+
+ $newFileName = basename($newFileName, "." . $this->userlog->logext);
+ if (empty($newFileName)) {
+ $newFileName = $fileHandler->name() . "_rename_" . date('Y-m-d_H-i-s');
+ }
+ $newFile = dirname($log_file) . "/" . $newFileName . "." . $this->userlog->logext;
+ // check if new file exist => return false
+ $fileHandler->XoopsFileHandler($newFile, false);
+ if ($fileHandler->exists()) {
+ $this->setErrors("({$newFile}) is exist");
+ return false;
+ }
+ if (!@rename($log_file, $newFile)) {
+ $this->setErrors("Cannot rename ({$file})");
+ return false;
+ }
+ return $newFile;
+ }
+ public function copyFile($log_file = null, $newFileName = null)
+ {
+ if (!is_string($log_file)) {
+ $this->setErrors(_AM_USERLOG_FILE_SELECT_ONE);
+ return false;
+ }
+ // check if file exist
+ $fileHandler = XoopsFile::getHandler();
+ $fileHandler->XoopsFileHandler($log_file, false);
+ if (!$fileHandler->exists()) {
+ $this->setErrors("({$log_file}) is a folder or is not exist");
+ return false;
+ }
+
+ $newFileName = basename($newFileName, "." . $this->userlog->logext);
+ if (empty($newFileName)) {
+ $newFileName = $fileHandler->name() . "_copy_" . date('Y-m-d_H-i-s');
+ }
+ $newFile = dirname($log_file) . "/" . $newFileName . "." . $this->userlog->logext;
+ // check if new file exist => return false
+ $fileHandler->XoopsFileHandler($newFile, false);
+ if ($fileHandler->exists()) {
+ $this->setErrors("({$newFile}) is exist");
+ return false;
+ }
+ if (!@copy($log_file, $newFile)) {
+ $this->setErrors("Cannot rename ({$file})");
+ return false;
+ }
+ return $newFile;
+ }
+ public function zipFiles($log_files = array(), $zipFileName = null)
+ {
+ // file open/read
+ $fileHandler = XoopsFile::getHandler();
+ foreach($log_files as $key=>$file) {
+ $fileHandler->XoopsFileHandler($file, false);
+ if (!$fileHandler->exists()) {
+ $this->setErrors("({$file}) is a folder or is not exist");
+ unset($log_files[$key]);
+ continue;
+ }
+ }
+ if( ($totalFiles = count($log_files)) == 0) {
+ $this->setErrors("No file to zip");
+ return false;
+ }
+ //this folder must be writeable by the server
+ $zipFolder = $this->userlog->getConfig('logfilepath') .'/'. USERLOG_DIRNAME . '/zip';
+ $folderHandler = XoopsFile::getHandler("folder",$zipFolder, true);// create if not exist
+ $zipFileName = basename($zipFileName, ".zip");
+ if (empty($zipFileName)) {
+ $zipFileName = $this->userlog->getConfig('logfilename') . "_zip_" . $totalFiles . "_files_" . date('Y-m-d_H-i-s') . ".zip";
+ } else {
+ $zipFileName = $zipFileName . ".zip";
+ }
+ $zipFile = $zipFolder . "/" . $zipFileName;
+
+ $zip = new ZipArchive();
+
+ if ($zip->open($zipFile, ZIPARCHIVE::CREATE)!==TRUE)
+ {
+ $this->setErrors("Cannot open ({$zipFile})");
+ return false;
+ }
+ foreach($log_files as $file) {
+ if(!$zip->addFile($file, basename($file))) {
+ $this->setErrors("Cannot zip ({$file})");
+ }
+ }
+ $this->setErrors("Number of files operated in zipped file: ({$zip->numFiles})");
+ //$this->setErrors("Zip file name: ({$zip->filename})");
+ $zip->close();
+ return $zipFile;
+ }
+ public function buildFileSelectEle($currentFile = null, $multi = false, $size = 3)
+ {
if (empty($currentFile[0])) {
$currentFile = $this->userlog->getWorkingFile();
}
- $fileEl = new XoopsFormSelect(_AM_USERLOG_FILE,"file", $currentFile, 3, $multi);
+ $fileEl = new XoopsFormSelect(_AM_USERLOG_FILE,"file", $currentFile, $size, $multi);
list($allFiles,$totalFiles) = $this->userlog->getAllLogFiles();
if (empty($totalFiles)) return $fileEl;
$log_file_name = $this->userlog->getConfig('logfilename');
Modified: XoopsModules/userlog/trunk/userlog/class/userlog.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/class/userlog.php 2013-03-12 02:58:29 UTC (rev 11212)
+++ XoopsModules/userlog/trunk/userlog/class/userlog.php 2013-03-12 10:39:59 UTC (rev 11213)
@@ -64,7 +64,23 @@
}
return $this->logmodule;
}
-
+ public function &getModules($dirnames = array(), $otherCriteria = null)
+ {
+ // get all dirnames
+ $module_handler =& xoops_gethandler('module');
+ $criteria = new CriteriaCompo();
+ if(count($dirnames) > 0) {
+ foreach($dirnames as $mDir) {
+ $criteria->add(new Criteria('dirname', $mDir), "OR");
+ }
+ }
+ if (!empty($otherCriteria)) {
+ $criteria->add($otherCriteria);
+ }
+ $criteria->add(new Criteria('isactive', 1), "AND");
+ $modules = $module_handler->getObjects($criteria, true);
+ return $modules;
+ }
public function &getUser()
{
if ($this->user == null) {
Modified: XoopsModules/userlog/trunk/userlog/docs/changelog.txt
===================================================================
--- XoopsModules/userlog/trunk/userlog/docs/changelog.txt 2013-03-12 02:58:29 UTC (rev 11212)
+++ XoopsModules/userlog/trunk/userlog/docs/changelog.txt 2013-03-12 10:39:59 UTC (rev 11213)
@@ -1,5 +1,7 @@
Userlog
Changelog:
+- add filemanager to delete/rename/copy/merge/zip/export-csv log files(2013/03/12)
+- add getModules function, add check all items in views block (2013/03/12)
- add export to csv. add statistics page. rewrite views functions (2013/03/11)
- add more GUI facilities to admin/logs.php. a complete toggle formhead can remember the last status for each admin, reset button, up/down. (2013/03/07)
- add number of items to display and fix script_name bug in views block.(2013/03/05)
Modified: XoopsModules/userlog/trunk/userlog/language/english/admin.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/language/english/admin.php 2013-03-12 02:58:29 UTC (rev 11212)
+++ XoopsModules/userlog/trunk/userlog/language/english/admin.php 2013-03-12 10:39:59 UTC (rev 11213)
@@ -24,8 +24,11 @@
define("_AM_USERLOG_ADMENU_INDEX","Home");
define("_AM_USERLOG_ADMENU_SETTING","Setting");
define("_AM_USERLOG_ADMENU_LOGS","Logs");
+define("_AM_USERLOG_ADMENU_FILE","File manager");
define("_AM_USERLOG_ADMENU_STATS","Statistics");
define("_AM_USERLOG_ABOUT","About");
+// general error
+define("_AM_USERLOG_ERROR","An error occured during the operation. %1\$s");
// setting.php loglog object options
define("_AM_USERLOG_LOG_ID","Log ID");
@@ -229,4 +232,22 @@
define("_AM_USERLOG_SUMMARY","Some examples of criteria you can use to get logs");
define("_AM_USERLOG_SUMMARY_DELETED","Deleted items from your database");
define("_AM_USERLOG_SUMMARY_ADMIN","Admin user activities");
-define("_AM_USERLOG_SUMMARY_GOOGLE","Users who come to your site from Google.");
\ No newline at end of file
+define("_AM_USERLOG_SUMMARY_GOOGLE","Users who come to your site from Google.");
+
+// file.php
+define("_AM_USERLOG_FILE_ACTION","Select one action");
+define("_AM_USERLOG_FILE_SELECT_ONE","You must select one file.");
+define("_AM_USERLOG_FILE_RENAME","Rename");
+define("_AM_USERLOG_FILE_COPY","Copy");
+define("_AM_USERLOG_FILE_ZIP","Compress(Zip)");
+define("_AM_USERLOG_FILE_MERGE","Merge");
+define("_AM_USERLOG_FILE_EXPORT_CSV","Export to CSV");
+define("_AM_USERLOG_FILE_FILENAME","Enter the result file name. e.g.: myfile");
+define("_AM_USERLOG_FILE_FILENAME_DSC","Advise: Leave it empty to auto generate by using the current criteria and date. If you enter an already existed file name for zip file, new files will be added/overwritten in old archive file.");
+define("_AM_USERLOG_FILE_MERGE_SUCCESS","%1\$d files merged successfully into %2\$s");
+define("_AM_USERLOG_FILE_DELETE_SUCCESS","%1\$d files deleted successfully.");
+define("_AM_USERLOG_FILE_RENAME_SUCCESS","file %1\$s renamed successfully into %2\$s");
+define("_AM_USERLOG_FILE_COPY_SUCCESS","file %1\$s copied successfully into %2\$s");
+define("_AM_USERLOG_FILE_ZIP_SUCCESS","%1\$d files zipped successfully into %2\$s");
+define("_AM_USERLOG_FILE_EXOPORT_SUCCESS","%1\$d files exported successfully into %2\$s");
+define("_AM_USERLOG_FILE_CONFIRM","Are you sure you want to do this action?");
\ No newline at end of file
Modified: XoopsModules/userlog/trunk/userlog/language/english/help/help.html
===================================================================
--- XoopsModules/userlog/trunk/userlog/language/english/help/help.html 2013-03-12 02:58:29 UTC (rev 11212)
+++ XoopsModules/userlog/trunk/userlog/language/english/help/help.html 2013-03-12 10:39:59 UTC (rev 11213)
@@ -50,10 +50,22 @@
<h4 class="odd">Logs</h4>
<p class="even">
-You can see/delete/purge users logs through the Admin section of the userlog Module.<br /><br />
+You can see/delete/purge/export users logs through the Admin section of the userlog Module.<br /><br />
You can get logs from database or file source engine.<br /><br />
To search for logs based on a criteria you have an advance form.<br /><br />
+Export files will be stored in "the working path"/export folder.<br /><br />
</p>
+<h4 class="odd">File manager</h4>
+<p class="even">
+You can see/delete/rename/copy/merge/compress(zip)/export users log files through the file manager of the userlog Module.<br /><br />
+Zip files will be stored in "the working path"/zip folder.<br /><br />
+Export files will be stored in "the working path"/export folder. <br /><br />
+You can select a name for your result (e.g.: copied file) but if you leave that empty, userlog will generate an automatic name by using the current criteria and date.<br /><br />
+The difference between The file manager section and logs section when you select file engine is, in logs section you dynamically work with files data and can see them rows by rows in detail but in file manager you just can work on the whole data in files.<br /><br />
+For example in logs section you can select some rows to export but in file manager you just can export whole data from some selected files.<br /><br />
+<b>Attention: If you work on too many files at once you may end up a white screen. It is because the server runs out of memory and/or cpu.</b>
+</p>
+
<h4 class="odd">Views block</h4>
<p class="even">
Many XOOPS users have a wish for a block to see most viewed items in a module or in the whole website in a specific period of time.<br /><br />
@@ -62,4 +74,4 @@
<br /><br />
</p>
-</div>
+</div>
\ No newline at end of file
Added: XoopsModules/userlog/trunk/userlog/templates/userlog_admin_file.html
===================================================================
--- XoopsModules/userlog/trunk/userlog/templates/userlog_admin_file.html (rev 0)
+++ XoopsModules/userlog/trunk/userlog/templates/userlog_admin_file.html 2013-03-12 10:39:59 UTC (rev 11213)
@@ -0,0 +1,2 @@
+<{$logo}>
+<{$form}>
Modified: XoopsModules/userlog/trunk/userlog/xoops_version.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/xoops_version.php 2013-03-12 02:58:29 UTC (rev 11212)
+++ XoopsModules/userlog/trunk/userlog/xoops_version.php 2013-03-12 10:39:59 UTC (rev 11213)
@@ -84,6 +84,10 @@
$modversion['templates'][$i]['description'] = 'list of userlog logs';
$i++;
+$modversion['templates'][$i]['file'] = 'userlog_admin_file.html';
+$modversion['templates'][$i]['description'] = 'File manager';
+
+$i++;
$modversion['templates'][$i]['file'] = 'userlog_admin_stats.html';
$modversion['templates'][$i]['description'] = 'Logs Statistics';
|