-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfb2new.php
123 lines (117 loc) · 4.04 KB
/
fb2new.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
<?php
use \analib\Util\StdIo;
use \analib\Core\Xml\Fb2 as Fb2;
include_once 'LibraryIncluder.php';
LibraryIncluder::includeAnalib();
define('FB2_GENRE', 'genre');
define('FB2_AUTHOR', 'author');
define('FB2_TITLE', 'title');
define('FB2_ANNOTATION', 'annotation');
define('FB2_LANG', 'lang');
define('FB2_SEQUENCE', 'sequence');
define('FB2_MAKE', 'make');
define('CANCEL', 'cancel');
$titleInfoSteps = array(
FB2_GENRE => 'Добавить жанр',
FB2_AUTHOR => 'Добавить автора',
FB2_TITLE => 'Ввести название',
FB2_ANNOTATION => 'Ввести аннотацию',
FB2_LANG => 'Ввести язык',
FB2_SEQUENCE => 'Ввести серию',
FB2_MAKE => 'Генерация',
CANCEL => 'Отмена',
);
//------------------------------------------------------------------------------
$denyMap = array(
'\'' => '`',
'"' => '`',
'\\' => '_',
'/' => '_',
'|' => '_',
'?' => '.',
// ' ' => '_',
':' => '.',
'*' => '.',
);
$bookArray = array(
'genre' => array(),
'author' => array(),
'title' => '',
'annotation' => '',
'lang' => 'ru',
'sequence' => null,
'sections' => 0,
);
$loop = true;
StdIo::putLn();
while ($loop) {
$r = StdIo::askChoice('Выбор: ', $titleInfoSteps);
switch ($r) {
case FB2_GENRE:
StdIo::putLn();
$group = StdIo::askChoice('Раздел: ', Fb2\Fb2Genres::getGenresGroup());
StdIo::putLn($group);
$genre = StdIo::askChoice('Жанр: ', Fb2\Fb2Genres::getGenresOfGroup($group));
$bookArray['genre'][] = $genre;
break;
case FB2_AUTHOR:
$author = StdIo::ask('Ф/И/О: ');
$author = explode('/', $author);
while (count($author) < 3) {
$author[] = '';
}
$author = Fb2\FB2Author::create($author[0], $author[1], $author[2]);
$bookArray['author'][] = $author;
break;
case FB2_TITLE:
$title = StdIo::ask('Название: ');
$bookArray['title'] = $title;
break;
case FB2_ANNOTATION:
$annotation = StdIo::ask('Аннотация: ');
$bookArray['annotation'] = $annotation;
break;
case FB2_LANG:
$lang = StdIo::ask('Язык: ');
$bookArray['lang'] = $lang;
break;
case FB2_SEQUENCE:
$name = trim(StdIo::ask('Название серии: '));
if ($name) {
$number = (int) trim(StdIo::ask('Номер в серии: '));
$bookArray['sequence'] = Fb2\FB2Sequence::create(
array(
'name' => $name,
'number' => $number,
)
);
}
break;
case FB2_MAKE:
$bookArray['sections'] = (int) StdIo::ask('Секций:');
$fb2 = Fb2\FB2Document::makeFromArray($bookArray);
$fileName = ($bookArray['title'] ? $bookArray['title'] : 'newFb2Document');
$out = '';
for ($i = 0; $i < mb_strlen($fileName, 'utf-8'); $i++) {
$symbol = mb_substr($fileName, $i, 1, 'utf-8');
if (isset($denyMap[$symbol])) {
$out .= $denyMap[$symbol];
} else {
$out .= $symbol;
}
}
$out = trim($out, '_.');
if (!$out) {
$out = '_';
}
$fileName = $out;
$fb2->saveToFile($fileName . '.fb2');
$loop = false;
break;
case CANCEL:
$loop = false;
break;
default :
var_dump($r);
}
}