Ответ на комментарий от revoltech
Вот чего я родил - всем сестра'м по серьга'м как говорится :)
Ответы на это сообщение:
revoltech (2024-11-01 06:40:05)
elseif ($opts[0] == 'u' and $opts[1] == 'e') { $work_options=array_slice($opts, 2); $aecho = []; $aoff = []; $alen = []; $lim = 0; $count = 0; foreach ($work_options as $work) { if(is_numeric($work)) { if($lim >= 0) die("error: unexpected single number"); $lim = intval($work); if($lim < 0) die("error: unexpected negative number"); } elseif(strpos($work,".")!==false) { if($lim < 0) die("error: missing lim value"); array_push($aecho,$work); if($lim > 0) { array_push($aoff,-$lim); array_push($alen,$lim); } else { array_push($aoff,NULL); array_push($alen,NULL); } $count = $count + 1; } elseif(strpos($work,":")!==false || strcmp($work,"all")==0 || strcmp($work,"last")==0) { if($lim != 0) die("error: slice can not be used with lim"); if(strcmp($work,"all")==0) { $a = 0; $b = 0; } elseif(strcmp($work,"last")==0) { $a = -1; $b = 1; } else { $numbers=explode(":", $work); $a = intval($numbers[0]); $b = intval($numbers[1]); } for($i=$count-1;$i>=0;$i--) { if(!is_null($aoff[$i])) break; $aoff[$i] = $a; $alen[$i] = $b; } } elseif(strcmp($work,"lim")==0) { $lim = -1; } else die("error: wrong arguments"); } $buffer = ""; for($i=0;$i<$count;$i++) { $echo = $aecho[$i]; if($aoff[$i]==0 && $alen[$i]==0) { $slice = $access->getMsgList($echo); // NULL, NULL } else { $slice = $access->getMsgList($echo, $aoff[$i], $alen[$i]); } if (count($slice) > 0) { $buffer.=$echo."\n".implode("\n", $slice)."\n"; } else { $buffer.=$echo."\n"; } } echo $buffer; }тут тебе и стандартный ii, и со слайсами в конце [-]N:M как в IDEC, и со слайсами внутри (между именами эх) как я предлагал ранее, и можно писать last вместо -1:1, и можно писать all внутри если в конце стоит last или какие другие нумера (типа /u/e/echo.1/all/echo.2/echo.3/last если надо только последнее сообщение для последних двух эх и всё для первой), и можно после каждой эхи писать, как предлагал revoltech, и даже lim/N в начале пройдёт как у Ромы (правда при этом уже нельзя будет слайсы воткнуть), а вот от msgid и далее делать неохота ибо оно криво будет работать т.к. порядок может быть чуть разный на разных нодах...
shaos (2024-11-01 06:19:54)
[Ответить]