$d) { $arr_column[$k] = $d[$column]; } array_multisort( $arr_column, $direction, $arr ); }*/ ///////////////////////////////////////////////////////////////////////////// /** * common::array_column() * * @author Roman Telychko * @version 0.1.20131030 * * @param array $arr * @param string $column_key * @param string $index_key * @return array */ public function array_column( $arr, $column_key, $index_key = null ) { if( empty($arr) ) { return []; } $data = []; $c = 0; foreach( $arr as $a ) { if( isset($a[$column_key]) ) { $data[ ( !empty($index_key) && isset($a[$index_key]) ) ? $a[$index_key] : $c ] = $a[$column_key]; $c++; } } return $data; } ///////////////////////////////////////////////////////////////////////////// /** * common::paginate() * * @author Roman Telychko * @version 0.1.20130627 * * @param array $data * @param bool $return_output * @return string */ public function paginate( $data = [], $return_output = false ) { $data = array_merge( [ 'page' => 1, 'items_per_page' => 20, 'total_items' => 0, 'url_for' => [], 'links_count' => 16, ], $data ); if( empty($data['page']) || empty($data['total_items']) || empty($data['url_for']) ) { return false; } if( $data['total_items'] <= $data['items_per_page'] ) { return false; } // pages count $data['pages_count'] = intval( ceil( $data['total_items'] / $data['items_per_page'] ) ); if( $data['page'] > $data['pages_count'] ) { $data['page'] = $data['pages_count']; } elseif( $data['page'] < 1 ) { $data['page'] = 1; } // links count if( $data['links_count'] <= $data['pages_count'] ) { if( $data['page'] <= floor( $data['links_count'] / 2 ) + 1 ) { $start_i = 1; } else { $start_i = $data['page'] - floor( $data['links_count'] / 2 ); } $stop_i = $start_i + $data['links_count'] - 1; if( $stop_i > $data['pages_count'] ) { $start_i = $data['pages_count'] - $data['links_count'] + 1; $stop_i = $data['pages_count']; } } else { $start_i = 1; $stop_i = $data['pages_count']; } $url_obj = $this->getDi()->get('url'); $firstPage = $data['url_for']; $firstPage['for'] = $data['index_page']; $output = ''; ($data['page'] != '1') ? $meta_link_prev = '' : $meta_link_prev = ''; ($data['page'] != $data['pages_count']) ? $meta_link_next = '' : $meta_link_next = ''; if( $return_output ) { $result = array( 'output' => $output, 'meta_link_prev' => $meta_link_prev, 'meta_link_next' => $meta_link_next, ); return $result; } else { echo( $output ); return true; } } /////////////////////////////////////////////////////////////////////////// /** * common::adminPaginate() * * @author Roman Telychko * @version 0.1.20130627 * * @param array $data * @param bool $return_output * @return string */ public function adminPaginate( $data = [], $return_output = false ) { $data = array_merge( [ 'page' => 1, 'items_per_page' => 20, 'total_items' => 0, 'url_for' => [], 'links_count' => 5, ], $data ); if( empty($data['page']) || empty($data['total_items']) || empty($data['url_for']) ) { return false; } if( $data['total_items'] <= $data['items_per_page'] ) { return false; } // pages count $data['pages_count'] = intval( ceil( $data['total_items'] / $data['items_per_page'] ) ); if( $data['page'] > $data['pages_count'] ) { $data['page'] = $data['pages_count']; } elseif( $data['page'] < 1 ) { $data['page'] = 1; } // links count if( $data['links_count'] <= $data['pages_count'] ) { if( $data['page'] <= floor( $data['links_count'] / 2 ) + 1 ) { $start_i = 1; } else { $start_i = $data['page'] - floor( $data['links_count'] / 2 ); } $stop_i = $start_i + $data['links_count'] - 1; if( $stop_i > $data['pages_count'] ) { $start_i = $data['pages_count'] - $data['links_count'] + 1; $stop_i = $data['pages_count']; } } else { $start_i = 1; $stop_i = $data['pages_count']; } $url_obj = $this->getDi()->get('url'); $output = '
'. ''. '
'; if( $return_output ) { return $output; } else { echo( $output ); return true; } } /////////////////////////////////////////////////////////////////////////// /** * common::shortenString() * * @author Roman Telychko * @version 0.1.20110930 * * @param string $str * @param integer $length * @return string */ public function shortenString( $str, $length = 200 ) { if( strlen($str) > $length ) { $str = wordwrap( $str, $length, '||BR||', false ); $str = mb_substr( $str, 0, mb_strpos( $str, '||BR||', 0, 'UTF-8' ), 'UTF-8' ); $str .= '...'; } return $str; } /////////////////////////////////////////////////////////////////////////// /** * common::transliterate() * * @author Jane Bezmaternykh * @version 0.1.20131115 * * @param string * @param integer $lang_id * @return string */ public function transliterate( $str, $lang_id = 1 ) { $str = mb_strtolower( trim($str), 'UTF-8'); $str = preg_replace('/\s{2,}/', ' ', $str); if( $lang_id==1 ) /* uk */ { $str = str_replace( 'и', 'y', $str ); $str = str_replace( 'й', 'yi', $str ); $str = str_replace( 'і', 'i', $str ); $str = str_replace( 'ї', 'yi', $str ); $str = str_replace( 'є', 'ye', $str ); } if( $lang_id==2 ) /* ru */ { $str = str_replace( 'и', 'i', $str ); $str = str_replace( 'й', 'yi', $str ); $str = str_replace( 'ы', 'y', $str ); $str = str_replace( 'э', 'e', $str ); $str = str_replace( 'ъ', '', $str ); } $str = str_replace( 'а', 'a', $str ); $str = str_replace( 'б', 'b', $str ); $str = str_replace( 'в', 'v', $str ); $str = str_replace( 'г', 'g', $str ); $str = str_replace( 'д', 'd', $str ); $str = str_replace( 'е', 'e', $str ); $str = str_replace( 'ж', 'j', $str ); $str = str_replace( 'з', 'z', $str ); $str = str_replace( 'к', 'k', $str ); $str = str_replace( 'л', 'l', $str ); $str = str_replace( 'м', 'm', $str ); $str = str_replace( 'н', 'n', $str ); $str = str_replace( 'о', 'o', $str ); $str = str_replace( 'п', 'p', $str ); $str = str_replace( 'р', 'r', $str ); $str = str_replace( 'с', 's', $str ); $str = str_replace( 'т', 't', $str ); $str = str_replace( 'у', 'u', $str ); $str = str_replace( 'ф', 'f', $str ); $str = str_replace( 'х', 'h', $str ); $str = str_replace( 'ц', 'ts', $str ); $str = str_replace( 'ч', 'ch', $str ); $str = str_replace( 'ш', 'sh', $str ); $str = str_replace( 'щ', 'sch', $str ); $str = str_replace( 'ю', 'yu', $str ); $str = str_replace( 'я', 'ya', $str ); $str = str_replace( 'ь', '', $str ); $str = preg_replace( '/\s/', '_', $str ); $str = preg_replace( '/[^a-z0-9\_]/', '', $str ); $str = preg_replace( '/\_{1,}/', '_', $str ); return $str; } ///////////////////////////////////////////////////////////////////////////// /** * common::generatePasswd() * * @author Jane Bezmaternykh * @version 0.1.20140428 * * @param integer $leight * @return string */ public function generatePasswd( $leight ) { $passwd = ''; $str = "qwertyuiopasdfghjklzxcvbnm123456789"; for($i=0; $i<$leight; $i++) { $passwd .= substr($str, mt_rand(0, strlen($str)-1), 1); } return $passwd; } ///////////////////////////////////////////////////////////////////////////// /** * common::getTypeSubtype() * * @author Jane Bezmaternykh * @version 0.1.20140407 * * @param string $type_alias * @param string $type_child_alias * @param string $subtype_alias * @param integer $lang_id * @return array */ public function getTypeSubtype( $type_alias = NULL, $type_child_alias = NULL, $subtype_alias = NULL, $lang_id ) { $types = $this->getDi()->get('models')->getCatalog()->getTypes( $lang_id ); $subtypes = $this->getDi()->get('models')->getCatalog()->getSubtypes( $lang_id ); //p($types,1); //p($types,1); $catalog = []; foreach( $subtypes as $s ) { $subtypes_[$s['type']][$s['id']] = $s; } foreach( $types as $t ) { $catalog_[$t['type']] = $t; $catalog_[$t['type']]['subtypes'] = !empty( $subtypes_[$t['type']] ) ? $subtypes_[$t['type']] : ''; if( $t['parent_id'] > 0 ) { $catalog_[$t['type']] = $t; $catalog_[$t['type']]['subtypes'] = $subtypes_[$t['parent_id']]; if( empty( $type_child_alias ) ) { $catalog_[$t['parent_id']]['type_children'][] = $t; } else { $catalog_[$t['parent_id']]['type_children_'] = $t; // for breadcrumbs } } } //p($catalog_,1); foreach( $catalog_ as $k => $c ) { //p($c['alias'] == $type_alias,1); if( !empty( $type_alias ) ) { if( $c['alias'] == $type_alias ) { if( !empty( $subtype_alias ) ) { foreach( $c['subtypes'] as $key => $val ) { if( $val['alias'] == $subtype_alias ) { //$catalog = $val; $catalog['subtype_id'] = $key; $catalog['subtype_alias'] = $subtype_alias; $catalog['subtype_title'] = $val['title']; $catalog['cover'] = $val['cover']; } } } else { $catalog = $c; } $catalog['type_id'] = $k; $catalog['type_alias'] = $c['alias']; $catalog['type_title'] = $c['title']; } } else { $catalog = $catalog_; } } // p($catalog,1); return $catalog; } ///////////////////////////////////////////////////////////////////////////// /** * common::getTypeSubtype1() * * @author Jane Bezmaternykh * @version 0.1.20140407 * * @param array $catalog_elements * @param integer $lang_id * @return array */ public function getTypeSubtype1( $catalog_elements, $lang_id ) { $rootId = 0; $catalog = []; $catalog_ids = []; $catalog2return = []; if( !empty( $catalog_elements ) ) { $catalog_alias = array_pop($catalog_elements); $catalog_temp = $this->getDi()->get('models')->getCatalog()->getCatalogWithTreeByAlias( $catalog_alias, $lang_id ); $catalog_ids = $this->getDi()->get('etc')->int2arr($catalog_temp); } $catalog_temp = $this->getDi()->get('models')->getCatalog()->getCatalog( $lang_id ); $catalog_return = []; foreach( $catalog_temp as $id => $node ) { $catalog[$node['id']] = $node; } foreach( $catalog as $id => $node ) { if( isset($node['parent_id']) ) { $catalog[$node['parent_id']]['sub'][$id] = &$catalog[$id]; } else { $rootId = $id; } } $catalog_ = [$rootId => $catalog[$rootId]]; switch( count($catalog_ids) ) { case 0: default: $catalog2return = $catalog_['0']['sub']; break; case 1: foreach( $catalog_['0']['sub'] as $k => $c ) { if( $k == $catalog_ids['0'] ) { $catalog2return = $c; } } break; case 2: foreach( $catalog_['0']['sub'] as $k => $c ) { if( $k == $catalog_ids['0'] ) { $catalog2return = $c; foreach( $c['sub'] as $key => $val ) { //unset($val['sub']); if( $key == $catalog_ids['1'] ) { $temp = $val; } } } } $catalog2return['sub'] = $temp; break; case 3: foreach( $catalog_['0']['sub'] as $k => $c ) { if( $k == $catalog_ids['0'] ) { $catalog2return = $c; foreach( $c['sub'] as $key => $val ) { //unset($val['sub']); if( $key == $catalog_ids['1'] ) { foreach( $val['sub'] as $last_k => $v ) { if( $last_k == $catalog_ids['2'] ) { $val['sub'] = $v; } else { unset($val['sub'][$last_k]); } } $temp = $val; } } $c['sub'] = $temp; } } $catalog2return['sub'] = $temp; break; } $catalog_return = [ 'catalog' => $catalog2return, 'path' => !empty( $catalog_ids ) ? $catalog_ids : [] ]; return $catalog_return; } ///////////////////////////////////////////////////////////////////////////// public function getTypeSubtype2($lang_id){ $catalog_temp = $this->getDi()->get('models')->getCatalog()->getCatalog( $lang_id ); $catalog = array(); foreach($catalog_temp as $item){ $catalog[$item['id']] = $item; } return $catalog; } /** * common::getGroups() * * @author Jane Bezmaternykh * @version 0.1.20140407 * * @param string $lang_id * @param array $groups * @return array */ public function getGroups( $lang_id, $groups ) { $catalog_ = $this->getDi()->get('models')->getCatalog()->getCatalog( $lang_id ); $compare = $this->getDi()->get('session')->get('compare', []); $groups_ = []; foreach( $catalog_ as $c ) { $catalog_new[$c['id']] = $c; } if( !empty( $groups ) ) { $item_ids = $this->array_column( $groups, 'id' ); $items = $this->getDi()->get('models')->getItems()->getItemsWithMinPrice( $lang_id, join( ',', $item_ids ) ); if( !empty( $items ) ) { $items_ = []; foreach( $items as $i ) { $items_[$i['id']] = $i; } foreach( $groups as &$g ) { $g['price'] = !empty( $items_[$g['id']]['price2'] ) ? $items_[$g['id']]['price2'] : ''; $g['title'] = !empty( $items_[$g['id']]['title'] ) ? $items_[$g['id']]['title'] : ''; $g['description'] = !empty( $items_[$g['id']]['description'] ) ? $this->shortenString($items_[$g['id']]['description'], 200) : ''; $g['content_description'] = !empty( $items_[$g['id']]['content_description'] ) ? $items_[$g['id']]['content_description'] : ''; $g['cover'] = !empty( $g['cover'] ) ? $this->getDi()->get('storage')->getPhotoUrl( $g['cover'], 'avatar', '200x' ) : '/images/packet.jpg'; $g['alias'] = $this->getDi()->get('url')->get([ 'for' => 'item', 'subtype' => $catalog_new[$g['catalog']]['alias'], 'group_alias' => $g['alias'], 'item_id' => $g['id'] ]); $g['checked'] = !empty($compare[$g['type_id']][$g['subtype_id']]) && in_array($g['id'], $compare[$g['type_id']][$g['subtype_id']]) ? 1 : 0; if( !empty( $g['options'] ) ) { $g['options_'] = $this->getDi()->get('etc')->hstore2arr($g['options']); $g['is_new'] = !empty( $g['options_']['is_new'] ) ? $g['options_']['is_new'] : '0'; $g['is_top'] = !empty( $g['options_']['is_top'] ) ? $g['options_']['is_top'] : '0'; unset($g['options_']); unset($g['options']); } } $groups_ = $groups; } } return $groups_; } ///////////////////////////////////////////////////////////////////////////// /** * common::getGroups1() * * @author Jane Bezmaternykh * @version 0.1.20140407 * * @param string $lang_id * @param array $groups * @return array */ public function getGroups1( $lang_id, $groups) { $groups_ = []; $compare = $this->getDi()->get('session')->get('compare', []); if( !empty( $groups ) ) { $item_ids = $this->array_column( $groups, 'id' ); $items = $this->getDi()->get('models')->getItems()->getItemsWithMinPrice( $lang_id, join( ',', $item_ids ) ); if( !empty( $items ) ) { $items_ = []; foreach( $items as $i ) { $items_[$i['id']] = $i; } foreach( $groups as &$g ) { $g['items'] = $this->getDi()->get('models')->getItems()->getSizesByGroupId($lang_id, $g['group_id']); for($i = 0; $i < count($g['items']); $i++) { $g['items'][$i]['prices'] = $this->getPricesArray($g['items'][$i]); } $g['price'] = !empty( $items_[$g['id']]['price2'] ) ? $items_[$g['id']]['price2'] : 0; $g['title'] = !empty( $items_[$g['id']]['title'] ) ? $items_[$g['id']]['title'] : ''; $g['description'] = !empty( $items_[$g['id']]['description'] ) ? $this->shortenString($items_[$g['id']]['description'], 200) : ''; $g['content_description'] = !empty( $items_[$g['id']]['content_description'] ) ? $items_[$g['id']]['content_description'] : ''; $g['cover'] = !empty( $g['cover'] ) ? $this->getDi()->get('storage')->getPhotoUrl( $g['cover'], 'avatar', '200x' ) : '/images/packet.jpg'; $g['alias'] = $this->getDi()->get('url')->get([ 'for' => 'item', 'type' => $g['type_alias'], 'subtype' => $g['subtype_alias'], 'group_alias' => $g['alias'], 'item_id' => $g['id'] ]); if(isset($g['type_id']) && isset($g['catalog'])) $g['checked'] = !empty($compare[$g['type_id']][$g['catalog']]) && in_array($g['id'], $compare[$g['type_id']][$g['catalog']]) ? 1 : 0; if( !empty( $g['options'] ) ) { $g['options_'] = $this->getDi()->get('etc')->hstore2arr($g['options']); $g['is_new'] = !empty( $g['options_']['is_new'] ) ? $g['options_']['is_new'] : '0'; $g['is_top'] = !empty( $g['options_']['is_top'] ) ? $g['options_']['is_top'] : '0'; unset($g['options_']); unset($g['options']); } } $groups_ = $groups; } } return $groups_; } public function getGroupsBackend( $lang_id, $groups) { $groups_ = []; $compare = $this->getDi()->get('session')->get('compare', []); if( !empty( $groups ) ) { $item_ids = $this->array_column( $groups, 'id' ); $items = $this->getDi()->get('models')->getItems()->getItemsWithMinPrice( $lang_id, join( ',', $item_ids ) ); if( !empty( $items ) ) { $items_ = []; foreach( $items as $i ) { $items_[$i['id']] = $i; } foreach( $groups as &$g ) { $g['items'] = $this->getDi()->get('models')->getItems()->getSizesByGroupId($lang_id, $g['group_id']); for($i = 0; $i < count($g['items']); $i++) { $g['items'][$i]['prices'] = $this->getPricesArray($g['items'][$i]); } $g['price'] = !empty( $items_[$g['id']]['price2'] ) ? $items_[$g['id']]['price2'] : 0; $g['title'] = !empty( $items_[$g['id']]['title'] ) ? $items_[$g['id']]['title'] : ''; $g['description'] = !empty( $items_[$g['id']]['description'] ) ? $this->shortenString($items_[$g['id']]['description'], 200) : ''; $g['content_description'] = !empty( $items_[$g['id']]['content_description'] ) ? $items_[$g['id']]['content_description'] : ''; $g['cover'] = !empty( $g['cover'] ) ? $this->getDi()->get('storage')->getPhotoUrl( $g['cover'], 'avatar', '200x' ) : '/images/packet.jpg'; if(isset($g['type_id']) && isset($g['catalog'])) $g['checked'] = !empty($compare[$g['type_id']][$g['catalog']]) && in_array($g['id'], $compare[$g['type_id']][$g['catalog']]) ? 1 : 0; if( !empty( $g['options'] ) ) { $g['options_'] = $this->getDi()->get('etc')->hstore2arr($g['options']); $g['is_new'] = !empty( $g['options_']['is_new'] ) ? $g['options_']['is_new'] : '0'; $g['is_top'] = !empty( $g['options_']['is_top'] ) ? $g['options_']['is_top'] : '0'; unset($g['options_']); unset($g['options']); } } $groups_ = $groups; } } return $groups_; } ///////////////////////////////////////////////////////////////////////////// /** * common::seo_important() * * @author Jane Bezmaternykh * @version 0.1.20140412 * * @param array $filters * @param array $filters_applied * @param string $url * @param string $price * @param array $sort * @return array */ public function seo_important( $filters, $filters_applied, $url, $price, $sort ) { $lang_id = 1; $seo_important_filters = $this->getDi()->get('models')->getFilters()->getSeoImportantFilters( $lang_id ); $seo_important_filters_ids = self::array_column( $seo_important_filters, 'id' ); foreach( $seo_important_filters as $f ) { $seo_alias[$f['id']] = [ 'key' => $f['filter_key_alias'], 'value' => $f['filter_value_alias'] ]; } foreach( $filters as $k => &$f ) { $filters[$k]['alias_'] = in_array( $f['id'], $filters_applied ) ? array_diff( $filters_applied, [ $f['id'] ] ) : array_merge( $filters_applied, [ $f['id'] ] ); sort( $f['alias_'] ); $filters[$k]['alias'] = $url. (!empty( $f['alias_'] ) ? '/'.join( '-', $f['alias_'] ) : ''). (!empty( $f['alias_'] ) ? ( !empty($price) ? '--price-'.$price : '' ) : ( !empty($price) ? '/price-'.$price : '' )). (!empty($sort) ? '/sort-'.join('-', $sort) : ''); if( !empty( $f['alias_'] ) ) { foreach( $f['alias_'] as $v ) { if( in_array( $v, $seo_important_filters_ids ) ) { $filters[$k]['seo_alias_array'][] = $seo_alias[$v]; } } if( !empty( $f['seo_alias_array'] ) ) { foreach( $f['seo_alias_array'] as $s ) { $f['seo_alias_array_'][$s['key']][] = $s['value']; } foreach( $f['seo_alias_array_'] as $key => $s ) { $f['seo_alias_array__'][$key] = $key.'-'.join( '-', $s ); } $filters[$k]['alias'] = $url. (!empty( $f['alias_'] ) && !empty( $f['seo_alias_array__'] ) ? '/'.join( '-', $f['alias_'] ).'--'.join( '--', $f['seo_alias_array__'] ) : ''). ( empty( $f['alias_'] ) && empty( $f['seo_alias_array__'] ) ? ( !empty($price) ? '/price-'.$price : '' ) : ( !empty($price) ? '--price-'.$price : '' ) ). ( !empty($sort) ? '/sort-'.join('-', $sort) : '' ); unset($f['seo_alias_array_']); unset($f['seo_alias_array__']); } unset($f['seo_alias_array']); unset($f['alias_']); } } return $filters; } ///////////////////////////////////////////////////////////////////////////// /** * common::getUrlForFilter() * * @author Jane Bezmaternykh * @version 0.1.20140415 * * @param array $params * @param string $page * @return array */ public function getUrlForFilter( $params, $page ) { if( empty($params['filter_ids']) && empty($params['filter_alias']) && empty($params['price']) && !empty($params['sort']) ) { $url = ['for' => 'subtype_sorted_paginated', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'sort' => $params['sort'], 'page' => $page ]; } elseif( !empty($params['filter_ids']) && empty($params['filter_alias']) && empty($params['price']) && empty($params['sort']) ) { $url = [ 'for' => 'get_items_with_filters_ids_paginate', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'filter_ids' => $params['filter_ids'], 'page' => $page ]; } elseif( !empty($params['filter_ids']) && empty($params['filter_alias']) && empty($params['price']) && !empty($params['sort']) ) { $url = [ 'for' => 'get_items_with_filters_ids_sorted_paginate', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'filter_ids' => $params['filter_ids'], 'sort' => $params['sort'], 'page' => $page ]; } elseif( !empty($params['filter_ids']) && !empty($params['filter_alias']) && empty($params['price']) && empty($params['sort']) ) { $url = [ 'for' => 'get_items_with_filters_id_alias_paginate', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'filter_ids' => $params['filter_ids'], 'filter_alias' => $params['filter_alias'], 'page' => $page ]; } elseif( !empty($params['filter_ids']) && !empty($params['filter_alias']) && empty($params['price']) && !empty($params['sort']) ) { $url = [ 'for' => 'get_items_with_filters_id_alias_sorted_paginate', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'filter_ids' => $params['filter_ids'], 'filter_alias' => $params['filter_alias'], 'sort' => $params['sort'], 'page' => $page ]; } elseif( !empty($params['filter_ids']) && empty($params['filter_alias']) && !empty($params['price']) && empty($params['sort']) ) { $url = [ 'for' => 'get_items_with_filters_id_price_paginate', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'filter_ids' => $params['filter_ids'], 'price' => $params['price'], 'page' => $page ]; } elseif( !empty($params['filter_ids']) && empty($params['filter_alias']) && !empty($params['price']) && !empty($params['sort']) ) { $url = [ 'for' => 'get_items_with_filters_id_price_sorted_paginate', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'filter_ids' => $params['filter_ids'], 'price' => $params['price'], 'sort' => $params['sort'], 'page' => $page ]; } elseif( !empty($params['filter_ids']) && !empty($params['filter_alias']) && !empty($params['price']) && empty($params['sort']) ) { $url = [ 'for' => 'get_items_with_filters_id_alias_price_paginate', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'filter_ids' => $params['filter_ids'], 'filter_alias' => $params['filter_alias'], 'price' => $params['price'], 'page' => $page ]; } elseif( !empty($params['filter_ids']) && !empty($params['filter_alias']) && !empty($params['price']) && !empty($params['sort']) ) { $url = [ 'for' => 'get_items_with_filters_id_alias_price_sorted_paginate', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'filter_ids' => $params['filter_ids'], 'filter_alias' => $params['filter_alias'], 'price' => $params['price'], 'sort' => $params['sort'], 'page' => $page ]; } elseif( empty($params['filter_ids']) && empty($params['filter_alias']) && !empty($params['price']) && empty($params['sort']) ) { $url = [ 'for' => 'get_items_with_filters_price_paginate', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'price' => $params['price'], 'page' => $page ]; } elseif( empty($params['filter_ids']) && empty($params['filter_alias']) && !empty($params['price']) && !empty($params['sort']) ) { $url = [ 'for' => 'get_items_with_filters_price_sorted_paginate', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'price' => $params['price'], 'sort' => $params['sort'], 'page' => $page ]; } return $url; } ///////////////////////////////////////////////////////////////////////////// /** * common::getUrlForSort() * * @author Jane Bezmaternykh * @version 0.1.20140520 * * @param array $params * @param string $sort_default_1 * @param string $sort_default_2 * @return array */ public function getUrlForSort( $params, $sort_default_1, $sort_default_2 ) { //p($params,1); if( empty($params['filter_ids']) && empty($params['filter_alias']) && empty($params['price']) ) { $url[0] = ['for' => 'subtype_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'sort' => '0-'.$sort_default_2]; $url[1] = ['for' => 'subtype_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'sort' => '1-'.$sort_default_2]; $url[2] = ['for' => 'subtype_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'sort' => '2-'.$sort_default_2]; $url[3] = ['for' => 'subtype_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'sort' => $sort_default_1.'-3']; $url[4] = ['for' => 'subtype_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'sort' => $sort_default_1.'-4']; $url[5] = ['for' => 'subtype_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'sort' => $sort_default_1.'-5']; } elseif( !empty($params['filter_ids']) && empty($params['filter_alias']) && empty($params['price']) ) { $url[0] = ['for' => 'get_items_with_filters_ids_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'filter_ids' => $params['filter_ids'], 'sort' => '0-'.$sort_default_2]; $url[1] = ['for' => 'get_items_with_filters_ids_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'filter_ids' => $params['filter_ids'], 'sort' => '1-'.$sort_default_2]; $url[2] = ['for' => 'get_items_with_filters_ids_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'filter_ids' => $params['filter_ids'], 'sort' => '2-'.$sort_default_2]; $url[3] = ['for' => 'get_items_with_filters_ids_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'filter_ids' => $params['filter_ids'], 'sort' => $sort_default_1.'-3']; $url[4] = ['for' => 'get_items_with_filters_ids_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'filter_ids' => $params['filter_ids'], 'sort' => $sort_default_1.'-4']; $url[5] = ['for' => 'get_items_with_filters_ids_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'filter_ids' => $params['filter_ids'], 'sort' => $sort_default_1.'-5']; } elseif( !empty($params['filter_ids']) && !empty($params['filter_alias']) && empty($params['price']) ) { $url[0] = ['for' => 'get_items_with_filters_id_alias_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'filter_ids' => $params['filter_ids'], 'filter_alias' => $params['filter_alias'], 'sort' => '0-'.$sort_default_2]; $url[1] = ['for' => 'get_items_with_filters_id_alias_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'filter_ids' => $params['filter_ids'], 'filter_alias' => $params['filter_alias'], 'sort' => '1-'.$sort_default_2]; $url[2] = ['for' => 'get_items_with_filters_id_alias_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'filter_ids' => $params['filter_ids'], 'filter_alias' => $params['filter_alias'], 'sort' => '2-'.$sort_default_2]; $url[3] = ['for' => 'get_items_with_filters_id_alias_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'filter_ids' => $params['filter_ids'], 'filter_alias' => $params['filter_alias'], 'sort' => $sort_default_1.'-3']; $url[4] = ['for' => 'get_items_with_filters_id_alias_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'filter_ids' => $params['filter_ids'], 'filter_alias' => $params['filter_alias'], 'sort' => $sort_default_1.'-4']; $url[5] = ['for' => 'get_items_with_filters_id_alias_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'filter_ids' => $params['filter_ids'], 'filter_alias' => $params['filter_alias'], 'sort' => $sort_default_1.'-5']; } elseif( !empty($params['filter_ids']) && empty($params['filter_alias']) && !empty($params['price']) ) { $url[0] = ['for' => 'get_items_with_filters_id_price_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'filter_ids' => $params['filter_ids'], 'price' => $params['price'], 'sort' => '0-'.$sort_default_2]; $url[1] = ['for' => 'get_items_with_filters_id_price_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'filter_ids' => $params['filter_ids'], 'price' => $params['price'], 'sort' => '1-'.$sort_default_2]; $url[2] = ['for' => 'get_items_with_filters_id_price_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'filter_ids' => $params['filter_ids'], 'price' => $params['price'], 'sort' => '2-'.$sort_default_2]; $url[3] = ['for' => 'get_items_with_filters_id_price_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'filter_ids' => $params['filter_ids'], 'price' => $params['price'], 'sort' => $sort_default_1.'-3']; $url[4] = ['for' => 'get_items_with_filters_id_price_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'filter_ids' => $params['filter_ids'], 'price' => $params['price'], 'sort' => $sort_default_1.'-4']; $url[5] = ['for' => 'get_items_with_filters_id_price_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'filter_ids' => $params['filter_ids'], 'price' => $params['price'], 'sort' => $sort_default_1.'-5']; } elseif( !empty($params['filter_ids']) && !empty($params['filter_alias']) && !empty($params['price']) ) { $url[0] = ['for' => 'get_items_with_filters_id_alias_price_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'filter_ids' => $params['filter_ids'], 'filter_alias' => $params['filter_alias'], 'price' => $params['price'], 'sort' => '0-'.$sort_default_2]; $url[1] = ['for' => 'get_items_with_filters_id_alias_price_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'filter_ids' => $params['filter_ids'], 'filter_alias' => $params['filter_alias'], 'price' => $params['price'], 'sort' => '1-'.$sort_default_2]; $url[2] = ['for' => 'get_items_with_filters_id_alias_price_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'filter_ids' => $params['filter_ids'], 'filter_alias' => $params['filter_alias'], 'price' => $params['price'], 'sort' => '2-'.$sort_default_2]; $url[3] = ['for' => 'get_items_with_filters_id_alias_price_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'filter_ids' => $params['filter_ids'], 'filter_alias' => $params['filter_alias'], 'price' => $params['price'], 'sort' => $sort_default_1.'-3']; $url[4] = ['for' => 'get_items_with_filters_id_alias_price_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'filter_ids' => $params['filter_ids'], 'filter_alias' => $params['filter_alias'], 'price' => $params['price'], 'sort' => $sort_default_1.'-4']; $url[5] = ['for' => 'get_items_with_filters_id_alias_price_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'filter_ids' => $params['filter_ids'], 'filter_alias' => $params['filter_alias'], 'price' => $params['price'], 'sort' => $sort_default_1.'-5']; } elseif( empty($params['filter_ids']) && empty($params['filter_alias']) && !empty($params['price']) ) { $url[0] = ['for' => 'get_items_with_filters_price_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'price' => $params['price'], 'sort' => '0-'.$sort_default_2]; $url[1] = ['for' => 'get_items_with_filters_price_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'price' => $params['price'], 'sort' => '1-'.$sort_default_2]; $url[2] = ['for' => 'get_items_with_filters_price_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'price' => $params['price'], 'sort' => '2-'.$sort_default_2]; $url[3] = ['for' => 'get_items_with_filters_price_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'price' => $params['price'], 'sort' => $sort_default_1.'-3']; $url[4] = ['for' => 'get_items_with_filters_price_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'price' => $params['price'], 'sort' => $sort_default_1.'-4']; $url[5] = ['for' => 'get_items_with_filters_price_sorted', 'type' => $params['type_alias'], 'subtype' => $params['subtype_alias'], 'price' => $params['price'], 'sort' => $sort_default_1.'-5']; } return $url; } ///////////////////////////////////////////////////////////////////////////// /** * common::buildBreadcrumbs() * * @author Jane Bezmaternykh * @version 0.1.20140718 * * @param array $catalog * @return string */ public function buildBreadcrumbs( $catalog ) { $breadcrumbs = ''; //p($breadcrumbs,1); return $breadcrumbs; } /** * common::explodeAlias() * * @author Jane Bezmaternykh * @version 0.1.20140718 * * @param array $items * @return array */ public function explodeAlias( $items ) { if(!empty($items)){ foreach( $items as &$p ) { if(!empty($p['catalog_alias'])){ $p['explode'] = explode( '/', $p['catalog_alias'] ); $p['type_alias'] = $p['explode']['1']; $p['subtype_alias'] = $p['explode']['2']; unset( $p['explode'] ); } else { $p['type_alias'] = ''; $p['subtype_alias'] = ''; } } } return $items; } public function postCurl($params) { $curl = curl_init(); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_VERBOSE, 1); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_URL, 'http://'.config::get( 'global#domains/www-dev' ).'/ajax/get_session' ); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS,'params='.$params); curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/30.0.1599.114 Chrome/30.0.1599.114 Safari/537.36' ); $data = curl_exec($curl); return $data; } public function getPriceClass($price, $usersPrice) { $priceNum = substr($price, -1); if($usersPrice > $priceNum) { return 'class="inactive_price"'; } } public function getPricesArray($item) { $prices = []; $price_first = 2; $price_last = 6; for ($i = $price_first; $i < $price_last + 1; $i++) { $prices[] = $item['price' . $i]; } return $prices; } public function getCartItems($in_cart, $lang_id, $special_user = null) { $result = []; $total_price = 0; $item_ids = $this->array_column( $in_cart, 'item_id' ); $items = $this->getDi()->get('models')->getItems()->getItemsByIds( $lang_id, $item_ids ); $groups_ids = $this->array_column( $items, 'group_id' ); $groups_data = $this->getDi()->get('models')->getItems()->getItemsByColorAndGroupsId(join(',',$groups_ids)); $colors = array_unique($this->array_column( $groups_data, 'color_id' )); $color_info = $this->getDi()->get('models')->getItems()->getColorsInfoByColorsId( $lang_id, join(',',$colors) ); foreach($color_info as $k =>$v){ $colors_info[$v['id']] = $v; } foreach($groups_data as $k =>$v){ if($groups_data[$k]['color_id'] != 0){ $groups_data[$k]['color'] = $colors_info[$groups_data[$k]['color_id']]['color_title']; $groups_data[$k]['absolute_color'] = $colors_info[$groups_data[$k]['color_id']]['absolute_color']; } else { $groups_data[$k]['color'] = 0; $groups_data[$k]['absolute_color'] = 0; } } foreach($groups_data as $k =>$v){ $groups_data[$v['id']] = $v; } foreach ( $in_cart as $c ) { $count_item[$c['item_id']] = $c['count_items']; } if(isset($special_user)) { for ($i = 0; $i < count($items); $i++) { $items[$i]['prices'] = $this->getPricesArray($items[$i]); } } foreach ( $items as $k => $i ) { $items[$k]['cover'] = !empty( $i['group_cover'] ) ? $this->getDi()->get('storage')->getPhotoUrl( $i['item_cover'], 'avatar', '128x' ) : '/images/packet.jpg'; $items[$k]['alias'] = $this->getDi()->get('url')->get([ 'for' => 'item', 'subtype' => $i['catalog_alias'], 'group_alias' => $i['group_alias'], 'item_id' => $i['id'] ]); if(isset($i['prices'][0])) { $items[$k]['total_price'] = round($count_item[$i['id']] * $i['prices'][$special_user['status']], 2); $items[$k]['price2'] = $i['prices'][$special_user['status']]; } else { $items[$k]['total_price'] = round($count_item[$i['id']] * $i['price2'], 2); } $items[$k]['count'] = $count_item[$i['id']]; $total_price += $items[$k]['total_price']; $items[$k]['color'] = $groups_data[$i['id']]['color']; $items[$k]['absolute_color'] = $groups_data[$i['id']]['absolute_color']; $items_[$i['id']] = $items[$k]; } $total_price = round( $total_price, 2 ); $result['total_price'] = $total_price; $result['items'] = $items; $result['items_'] = $items_; return $result; } public function countOrderSum(&$order) { $sum = 0; foreach($order['items'] as $k => $item) { $sum += $item['total_price']; } $order['total_sum'] = $sum; } public function applyPromoCode($promo_code, &$items) { $flag = false; foreach($items as $k => $item) { if($this->containsPromoCode($promo_code, $item)) { $flag = true; $items[$k]['price2'] = number_format($item['price2'] - ($item['price2'] * $promo_code['discount'] / 100), 1, '.', ''); $items[$k]['total_price'] = number_format($items[$k]['price2'] * $item['count'], 1, '.', ''); } } return $flag; } public function containsPromoCode($promo_code, $item) { $group_ids = $this->parseArray($promo_code['group_ids']); /*$catalog_ids = $this->parseArray($promo_code['catalog_ids']);*/ if(!empty($group_ids) && in_array($item['id'], $group_ids)) return true; /*$catalog_tree = $this->getDi()->get('models')->getCatalog()->getCatalogWithTree($item['catalog']); $path = $this->parseArray($catalog_tree[0]['path']); if(!empty($catalog_ids) && !empty(array_intersect($path, $catalog_ids))) return true;*/ return false; } public function parseArray($str) { return explode(',', preg_replace('[{|}]', '' , $str)); } } }