ДоХтор, хз
быдлокод (+/-)
<?php
class DocClick {
private $dir = 'data';
private $filename;
private $mtime;
private $clicks = 10;
public function __construct($filename, $args = array()) {
// def value
$this->mtime = time() + 60;
if (!is_dir($this->dir)) {
mkdir($this->dir, 750, true);
}
$this->filename = $filename;
if (file_exists($this->dir . DIRECTORY_SEPARATOR . $this->filename)) {
$this->loadData($this->filename);
} else {
$this->saveData();
}
$this->setArgs($args);
$this->check();
}
public function loadData($filename) {
$data = json_decode(file_get_contents($this->dir . DIRECTORY_SEPARATOR . $filename), true);
$this->filename = $filename;
$this->clicks = $data['clicks'];
$this->mtime = $data['mtime'];
}
public function saveData() {
$data = array('clicks' => $this->clicks, 'mtime' => $this->mtime);
file_put_contents($this->dir . DIRECTORY_SEPARATOR . $this->filename, json_encode($data));
}
public function setArgs($args) {
if (isset($args['filename'])) {
$this->filename = $args['filename'];
}
if (isset($args['days'])) {
$this->mtime = $this->setMtime($args['days']);
}
if (isset($args['clicks'])) {
$this->clicks = $this->setClicks($args['clicks']);
}
}
public function setFilename($filename) {
$this->filename = $filename;
}
public function setMtime($days) {
$this->mtime = time() + 3600 * 24 * $days;
}
public function setClicks($clicks) {
$this->clicks = $clicks;
}
public function getLink($linkname) {
return ($this->mtime >= time() && $this->clicks > 0 ? '<div><a href="?docclick='. $this->filename . '">'. $linkname .'</a> ('. $this->clicks .')</div>' : $linkname . '(' . $this->clicks . ')');
}
public function check() {
if (isset($_GET['docclick'])) {
$this->loadData($_GET['docclick']);
$this->clicks -= 1;
$this->saveData();
header('Location: ' . $_SERVER['HTTP_REFERER']);
exit;
}
}
}
ob_start();
$obj = new DocClick('test.txt');
$obj->saveData();
$obj2 = new DocClick('test2.txt');
$obj2->saveData();
echo $obj->getLink('test');
echo $obj2->getLink('test2');