Joostina CMS / CMF v2.* API
  • Docs
  • Package
  • Class
  • Tree
  • Todo
Overview

Packages

  • Components
    • Acls
      • Models
        • Admin
        • Site
    • BlogCategory
      • Models
        • Admin
        • Site
    • Blogs
      • Controllers
        • Admin
        • Site
      • Helpers
      • Models
        • Admin
        • Site
    • Coder
      • Controllers
        • Admin
      • Models
        • Admin
    • Comments
      • Controllers
        • Admin
        • Site
      • Helpers
      • Models
        • Admin
        • Site
    • CommentsCounter
      • Models
        • Admin
        • Site
    • Mainpage
      • Controllers
        • Site
    • News
      • Controllers
        • Admin
        • Site
      • Helpers
      • Models
        • Admin
        • Site
    • Pages
      • Controllers
        • Admin
        • Site
      • Models
        • Site
    • Search
      • Controllers
        • Site
    • Site
      • Controllers
        • Admin
        • Site
    • Sitemap
      • Controllers
        • Admin
        • Site
      • Models
        • Admin
        • Site
    • Test
      • Controllers
        • Site
    • Torrents
      • Controllers
        • Site
    • Users
      • Controllers
        • Admin
        • Site
      • Models
        • Admin
        • Site
  • Compression
  • Core
    • Libraries
      • Arhive
      • Array
      • Attached
      • Autoadmin
      • Autoloader
      • Benchmark
      • Breadcrumbs
      • Cache
      • Config
      • Cookie
      • Csrf
      • Database
        • Drivers
          • Interfaces
      • Datetime
      • Debug
      • Editor
      • Events
      • File
      • Filter
      • Flashmessage
      • Folder
      • Hit
      • Html
      • Image
      • Inflector
      • Inputfilter
      • Libraries
      • Mail
      • Module
      • Nestedset
      • Pager
      • Pages
      • Params
      • Randomizer
      • Request
      • RobotLoader
      • Route
      • Security
      • Session
      • Static
      • String
      • Text
      • Trash
      • Validate
  • Email
  • Extra
    • Libraries
      • Basket
  • Joostina
    • Controller
    • Core
    • Document
  • JSMin
  • Libraries
    • Extra
      • Basket
        • Models
          • Site
  • None
  • Plugins
    • Autoadmin
    • Editor
    • Sitemap
  • SimpleMail
  • Vendors
    • Libraries
      • Email

Classes

  • joosArray
 1: <?php defined('_JOOS_CORE') or exit();
 2: 
 3: /**
 4:  * Библиотека расширенной работы с массивами
 5:  *
 6:  * @version    1.0
 7:  * @package    Core\Libraries
 8:  * @subpackage Array
 9:  * @category   Libraries
10:  * @author     Joostina Team <info@joostina.ru>
11:  * @copyright  (C) 2007-2012 Joostina Team
12:  * @license    MIT License http://www.opensource.org/licenses/mit-license.php
13:  * Информация об авторах и лицензиях стороннего кода в составе Joostina CMS: docs/copyrights
14:  *
15:  * */
16: class joosArray
17: {
18:     /**
19:      * ArrayTools::get_position()
20:      *
21:      * Определение позиции (порядкового номера) элемента массива по ключу
22:      *
23:      * @param mixed $array
24:      * @param mixed $cur
25:      *
26:      * @return integer Порядковый номер элемента в массиве
27:      */
28:     public static function get_position(array $array, $cur)
29:     {
30:         $i = 0;
31:         foreach ($array as $key => $val) {
32:             if ($key == $cur) {
33:                 return $i;
34:             }
35:             $i++;
36:         }
37: 
38:         return null;
39:     }
40: 
41:     /**
42:      * Возвращает срез массива по заданным параметрам:
43:      *
44:      * @param array   $array        Исходный массив
45:      * @param mixed   $cur_key      Ключ "текущего" элемента (вокруг которого делаем срез)
46:      * @param integer $prev         Количество элементов, предшествующих текущему
47:      * @param integer $next         Количество элементов, следуемых за текущим
48:      * @param bool    $static_count Флаг, повзоляющий всегда сохранять требуемое количество элементов в возвращаемом массиве
49:      *
50:      * @return array
51:      *
52:      * TODO: добавить возможность не вычислять позицию элемента, если в качестве ключа передается реальный порядковый номер
53:      */
54:     public static function get_next_prev($array, $cur_key, $prev = 3, $next = 5, $static_count = false)
55:     {
56:         $position = self::get_position($array, $cur_key);
57:         $offset = $position - $prev > 0 ? $position - $prev : 0;
58:         $length = $prev + $next + 1;
59: 
60:         if ($static_count) {
61:             $count = count($array);
62:             $last_index = $count - 1;
63: 
64:             if (($last_index - $offset) < ($prev + $next)) {
65:                 $offset = $offset + ($last_index - $offset) - ($prev + $next);
66:             }
67:         }
68: 
69:         return array_slice($array, $offset, $length, true);
70:     }
71: 
72: }
73: 
Joostina CMS / CMF v2.* API API documentation generated by ApiGen 2.6.1 – Template adapted by @olvlv and Joostina Team