예제 #1
0
 function widget_show_list()
 {
     $option = JRequest::getCmd('option');
     $mainframe = JFactory::getApplication();
     require_once JPATH_SITE . DS . 'components' . DS . 'com_javoice' . DS . 'helpers' . DS . 'route.php';
     $helper_route = new JavoiceHelperRoute();
     $model = $this->getModel();
     $voicetypes_popular = JRequest::getString('voicetypes');
     $types = array();
     if ($voicetypes_popular) {
         $voicetypes = explode(',', $voicetypes_popular);
         foreach ($voicetypes as $value) {
             $type = null;
             if (is_int($value)) {
                 $type = $model->getVoiceType($value);
             } elseif ($value != '') {
                 $type = $helper_route->getTypeId(trim($value), '*');
             }
             if ($type) {
                 $types[] = $type;
             }
         }
     } else {
         $types = $model->getVoiceTypes();
     }
     $this->assignRef('types', $types);
     if (!$types) {
         $types_suggest = $model->getVoiceTypes();
         if ($types_suggest) {
             foreach ($types_suggest as $type) {
                 $types_title[] = $type->alias;
             }
             $types_title = implode(', ', $types_title);
             $this->assignRef('types_title', $types_title);
             return;
         }
     }
     $forums = array();
     $forums_text = JRequest::getString('forums');
     if ($forums_text) {
         $forums_arr = explode(',', $forums_text);
         foreach ($forums_arr as $value) {
             $forum = null;
             if (is_int(trim($value))) {
                 $forums[] = trim($value);
             } elseif ($value != '' && isset($types[0]->id)) {
                 $forum = $helper_route->getForumsId(trim($value), $types[0]->id);
                 if ($forum) {
                     $forums[] = $forum;
                 }
             }
         }
         if ($forums) {
             $forums_id = implode(',', $forums);
             JRequest::setVar('forums_id', $forums_id);
         } else {
             JRequest::setVar('forums_id', "no_forum");
         }
     }
     //print_r($forums);exit;
     $type_id = JRequest::getInt('type', @$types[0]->id);
     $number_voices = JRequest::getVar('number_voices', 20);
     JRequest::setVar('type', $type_id);
     $this->assignRef('type_id', $type_id);
     $this->assignRef('number_voices', $number_voices);
     $this->assignRef('forums_text', $forums_text);
     $type = $model->getVoiceType($type_id);
     $this->assignRef('type', $type);
     $link = $_SERVER['REQUEST_URI'];
     $this->assignRef('link', $link);
 }
예제 #2
0
function JavoiceParseRoute($segments)
{
    $vars = array();
    $helper = new JavoiceHelperRoute();
    $app = JFactory::getApplication();
    //Get the active menu item
    $menu = $app->getMenu();
    $item = $menu->getActive();
    // Count route segments
    $count = count($segments);
    //print_r($segments);exit;
    if (!isset($item)) {
        $vars['view'] = $segments[0];
        if (!is_dir(JPATH_SITE . '/components/com_javoice/views/' . $vars['view'])) {
            $vars['view'] = 'items';
            $type_id = $helper->getTypeId($segments[0]);
            $vars['type'] = $type_id;
            if ($count == 2) {
                $temp = explode(':', $segments[$count - 1]);
                if (intval(@$temp[0])) {
                    //Item detail
                    $vars['cid'] = (int) $temp[0];
                    $vars['layout'] = 'item';
                } else {
                    // Forums or Status
                    if ($forums_id = $helper->getForumsId($temp[0], $type_id)) {
                        $vars['forums'] = $forums_id;
                    } elseif ($status_id = $helper->getStatusId($temp[0], $type_id)) {
                        $vars['status'] = $status_id;
                    } elseif ($segments[1] == 'latest') {
                        $vars['order'] = 'create_date desc';
                    } else {
                        $vars['layout'] = $segments[$count - 1];
                    }
                }
            } elseif ($count == 3) {
                if ($forums_id = $helper->getForumsId($segments[$count - 2], $type_id)) {
                    $vars['forums'] = $forums_id;
                }
                if ($status_id = $helper->getStatusId($segments[$count - 1], $type_id)) {
                    $vars['status'] = $status_id;
                } elseif ($segments[$count - 1] == 'latest') {
                    $vars['order'] = 'create_date desc';
                } else {
                    $temp = explode(':', $segments[$count - 1]);
                    if (intval(@$temp[0])) {
                        //Item detail
                        $vars['cid'] = (int) $temp[0];
                        $vars['layout'] = 'item';
                    }
                }
            } elseif ($count == 4) {
                $vars['view'] = $segments[$count - 4];
                $type_id = $helper->getTypeId($segments[$count - 3]);
                $vars['type'] = $type_id;
                if ($forums_id = $helper->getForumsId($segments[$count - 2], $type_id)) {
                    $vars['forums'] = $forums_id;
                }
                if ($status_id = $helper->getStatusId($segments[$count - 1], $type_id)) {
                    $vars['status'] = $status_id;
                } elseif ($segments[$count - 1] == 'latest') {
                    $vars['order'] = 'create_date desc';
                } else {
                    $temp = explode(':', $segments[$count - 1]);
                    if (intval(@$temp[0])) {
                        //Item detail
                        $vars['cid'] = (int) $temp[0];
                        $vars['layout'] = 'item';
                    }
                }
            }
            return $vars;
        }
        if ($vars['view'] == 'items') {
            $type_id = $helper->getTypeId($segments[1]);
            $vars['type'] = $type_id;
            if ($count == 3) {
                $temp = explode(':', $segments[$count - 1]);
                if (intval(@$temp[0])) {
                    //Item detail
                    $vars['cid'] = (int) $temp[0];
                    $vars['layout'] = 'item';
                } else {
                    // Forums or Status
                    if ($forums_id = $helper->getForumsId($temp[0], $type_id)) {
                        $vars['forums'] = $forums_id;
                    } elseif ($status_id = $helper->getStatusId($temp[0], $type_id)) {
                        $vars['status'] = $status_id;
                    } elseif ($segments[2] == 'latest') {
                        $vars['order'] = 'create_date desc';
                    } else {
                        $vars['layout'] = $segments[$count - 1];
                    }
                }
            } elseif ($count == 4) {
                if ($forums_id = $helper->getForumsId($segments[2], $type_id)) {
                    $vars['forums'] = $forums_id;
                }
                if ($status_id = $helper->getStatusId($segments[3], $type_id)) {
                    $vars['status'] = $status_id;
                } elseif ($segments[3] == 'latest') {
                    $vars['order'] = 'create_date desc';
                } else {
                    $temp = explode(':', $segments[$count - 1]);
                    if (intval(@$temp[0])) {
                        //Item detail
                        $vars['cid'] = (int) $temp[0];
                        $vars['layout'] = 'item';
                    }
                }
            }
        } elseif ($vars['view'] == 'users') {
            $vars['view'] = 'users';
            $temp = explode(':', $segments[1]);
            if (intval(@$temp[0])) {
                //Item detail
                $vars['uid'] = (int) $temp[0];
            } else {
                $vars['uid'] = $helper->getUserId($segments[1]);
            }
        } elseif ($vars['view'] == 'feeds') {
            $vars['view'] = 'feeds';
            if (isset($segments[1])) {
                $vars['layout'] = $segments[1];
            }
            if (isset($segments[2])) {
                $vars['alias'] = str_replace(":", "-", $segments[2]);
            }
        }
        //print_r($vars);exit;
        return $vars;
    }
    if ($item->query['view'] == 'items' && $segments[0] != 'users' && $segments[0] != 'feeds') {
        $type_id = $helper->getTypeId($segments[0]);
        $vars['type'] = $type_id;
        if ($count == 2) {
            //$temp = split(':', $segments[1]);
            $temp = explode(':', $segments[1]);
            if (intval(@$temp[0])) {
                //Item detail
                $vars['cid'] = (int) $temp[0];
                $vars['layout'] = 'item';
            } else {
                // Forums or Status
                if ($forums_id = $helper->getForumsId($segments[$count - 1], $type_id)) {
                    $vars['forums'] = $forums_id;
                } elseif ($status_id = $helper->getStatusId($segments[$count - 1], $type_id)) {
                    $vars['status'] = $status_id;
                } elseif ($segments[1] == 'latest') {
                    $vars['order'] = 'create_date desc';
                } else {
                    $vars['layout'] = $segments[$count - 1];
                }
            }
        } elseif ($count == 3) {
            $temp = explode(':', $segments[$count - 1]);
            if (intval(@$temp[0])) {
                //Item detail
                $vars['cid'] = (int) $temp[0];
                $vars['layout'] = 'item';
            }
            if ($forums_id = $helper->getForumsId($segments[1], $type_id)) {
                $vars['forums'] = $forums_id;
            }
            if ($status_id = $helper->getStatusId($segments[2], $type_id)) {
                $vars['status'] = $status_id;
            } elseif ($segments[2] == 'latest') {
                $vars['order'] = 'create_date desc';
            } elseif (!intval(@$temp[0])) {
                $vars['layout'] = $segments[$count - 1];
            }
        }
    } elseif (isset($item->query['view']) && $item->query['view'] == 'users' || $segments[0] == 'users') {
        $vars['view'] = 'users';
        if (isset($segments[1])) {
            $temp = explode(':', $segments[1]);
            if (intval(@$temp[0])) {
                //Item detail
                $vars['uid'] = (int) $temp[0];
            } else {
                $vars['uid'] = (int) $helper->getUserId($segments[1]);
            }
        }
        if (!isset($vars['uid'])) {
            $vars['uid'] = 999999999999.0;
        }
    } elseif (isset($item->query['view']) && $item->query['view'] == 'feeds' || $segments[0] == 'feeds') {
        $vars['view'] = 'feeds';
        if (isset($segments[1])) {
            $vars['layout'] = $segments[1];
        }
        if (isset($segments[2])) {
            $segments[2] = str_replace(":", "-", $segments[2]);
            $vars['alias'] = $segments[2];
        }
    }
    return $vars;
}