Hey liebe Gemeinde,
Zu Beginn erstmal folgender Code (das Nötigste):
Wie zu erkennen ist, wird mit der Funktion parse_changes() die Variable $all_changes definiert (für mein Problem unbedeutend). Nun möchte ich, dass alle beispielsweise 20 Einträge eine neue Datei (z.b. all_cached.changes.1.php oder all_cached.changes.2.php) kreiert wird. Also quasi für jede 20 Einträge eine neue Seite.
Hat jemand eine Idee, wie man das machen könnte?
Gruß farady
Zu Beginn erstmal folgender Code (das Nötigste):
PHP-Code:
<?php
/**
* class w_statistics
*
* classifies all statistics of DokuWiki
*/
class w_statistics
{
private $all_changes = array();
/**
* constructor
*
* defines var all_changes
*/
public function w_statistics($fromcache=true)
{
if($fromcache)
{
return $this->get_cache();
}
else
{
return $this->parse_changes();
}
}
/**
* get_cache
*
* gets data from cache
*/
private function get_cache()
{
global $conf;
$check = true;
$cache_dir = $conf['cachedir'] . '/w_statistics/';
$cache_file = $cache_dir . 'all_cached.changes.php';
if(!@file_exists($cache_file) || !is_dir($cache_dir))
{
$check = $this->write_cache($cache_dir, $cache_file);
}
$last_update = @filectime($cache_file);
if(time() > $last_update + 60)
{
$check = $this->write_cache($cache_dir, $cache_file);
}
if(!$check)
{
return false;
}
include_once($cache_file);
return true;
}
/**
* write_cache
*
* writes data in cache
*/
private function write_cache($cache_dir, $cache_file)
{
if(!$cache_dir || !$cache_file)
{
return false;
}
if (!is_dir($cache_dir))
{
io_mkdir_p($cache_dir); // DokuWiki framework
}
@unlink($cache_file);
unset($this->all_changes);
$this->parse_changes();
$fp = @fopen($cache_file, 'w');
$check_fw = @fwrite($fp, "<?php
if(!defined('DOKU_INC')) die('meh.');");
$i = 0;
foreach ($this->all_changes as $change)
{
@fwrite($fp, '
$this->all_changes['.$i.'] = array(
\'date\' => ' . $change['date'] . ',
\'ip\' => \'' . $change['ip'] . '\',
\'type\' => \'' . $change['type'] . '\',
\'id\' => \'' . $change['id'] . '\',
\'user\' => \'' . $change['user'] . '\',
\'sum\' => \'' . htmlspecialchars($change['sum'], ENT_QUOTES) . '\',
\'extra\' => \'' . $change['extra'] . '\',
);');
$i++;
}
@fclose($fp);
// if anything false return false
if(!$fp || !$check_fw)
{
return false;
}
return true;
}
/*...*/
Hat jemand eine Idee, wie man das machen könnte?
Gruß farady
Kommentar