获取mysql数据的smarty php问题

时间:2015-07-28 20:35:59

标签: php smarty

我熟悉php,但对smarty框架不太熟悉。也许有人可以帮我解决如何更改这个聪明的.php文件,它现在显示更多的mysql数据数组。在同一行中还有一些可以显示的字段。例如标志,街道。我怎样才能改变php给我{$ logo}等等......

public function isAccessible()
{
    $this->setPermissionLabel('open_search_by_company_form');
    return parent::isAccessible();
}

public function execute()
{
    $tp = SJB_System::getTemplateProcessor();
    $template = SJB_Request::getVar('display_template');
    $page = 1;
    $searchId = strip_tags(SJB_Request::getVar('searchId', time()));
    if (!empty($_REQUEST["page"]))
        $page = intval($_REQUEST["page"]);
    $items_per_page = SJB_Request::getVar('companies_per_page', false);
    $listing_type_sid = SJB_ListingTypeManager::getListingTypeSIDByID($_REQUEST["listing_type_id"]);
    $alphabets = SJB_AlphabetManager::getAlphabetsForDisplay();
    $abArr = array();
    foreach ($alphabets as $alphabet)
        $abArr[] = explode(' ', $alphabet['value']);

    $action = SJB_Request::getVar('action', 'search_form');
    if (SJB_Request::getVar('first_char')) {
        $action = 'search';
        $_REQUEST['CompanyName']['first_char_like'] = SJB_Request::getVar('first_char');
    }
    elseif (!isset($_REQUEST['CompanyName']) || $_REQUEST['CompanyName']['like'] == '') {
        $_REQUEST['CompanyName']['not_empty'] = true;
    }
    $userGroupSid = SJB_UserGroupManager::getUserGroupSIDByID('Employer');
    $userGroupFields = SJB_UserProfileFieldManager::getFieldsInfoByUserGroupSID($userGroupSid);
    foreach ($userGroupFields as $key => $userGroupField) {
        if ($userGroupField['type'] == 'location') {
            $userGroupFields[$key]['fields'] = array();
            $userGroupFields[$key]['fields'][$userGroupField['sid']] = $userGroupField;
        }
    }
    $user = new SJB_User(array(), $userGroupSid);
    $_REQUEST['active']['equal'] = 1;
    $search_form_builder = new SJB_SearchFormBuilder($user);
    $criteria_saver = new SJB_UserCriteriaSaver($searchId);
    $criteria_saver->setSessionForOrderInfo($_REQUEST);
    if (isset($_REQUEST['searchId'])) {
        $action = 'search';
        $criteria =  $criteria_saver->getCriteria();
        if (!empty($_REQUEST['sorting_field'])) {
            unset($criteria['sorting_field']);
        } else {
            $orderInfo = $criteria_saver->getOrderInfo();
            if (!empty($orderInfo['sorting_order'])) {
                $criteria['sorting_order'] = $orderInfo['sorting_order'];
            }
        }
        $_REQUEST = array_merge($_REQUEST, $criteria);
        if (!$items_per_page)
            $items_per_page = $criteria_saver->listings_per_page;
    }

    $items_per_page = $items_per_page ? $items_per_page : 16;
    $criteria = $search_form_builder->extractCriteriaFromRequestData(array_merge($_REQUEST, array('username' => array('not_equal' => 'jobg8'))), $user);
    if ($items_per_page) {
        $criteria_saver->setSessionForListingsPerPage($items_per_page);
    }
    $search_form_builder->setCriteria($criteria);
    $search_form_builder->registerTags($tp);

    $form_fields = $search_form_builder->getFormFieldsInfo();
    $tp->assign('form_fields', $form_fields);
    $metaDataProvider = SJB_ObjectMother::getMetaDataProvider();
    $tp->assign('METADATA',
        array(
            'form_fields' => $metaDataProvider->getFormFieldsMetadata($form_fields),
        )
    );

    $tp->assign('userGroupFields', $userGroupFields);
    $tp->assign('action', $action);
    $tp->assign('alphabets', $abArr);

    if ($action == 'search') {
        $sorting_field = SJB_Request::getVar('sorting_field', false);
        $sorting_order = SJB_Request::getVar('sorting_order', false);
        if (isset($_REQUEST['searchId']) && !$sorting_field) {
            $order_info = $criteria_saver->order_info;
            if ($order_info) {
                $sorting_field = $order_info['sorting_field'];
                $sorting_order = $order_info['sorting_order'];
            }
        }
        if (!$sorting_field) {
            $sorting_field = 'CompanyName';
            $sorting_order = 'ASC';
        }

        $inner_join = array();
        if ($sorting_field == 'number_of_jobs') {
            if (SJB_ListingTypeManager::getWaitApproveSettingByListingType($listing_type_sid) == 1) {
                $count = "sum( if( `listings`.`status` = 'approved', `listings`.`active`, 0 ) )";
            } else {
                $count = "sum(`listings`.`active`)";
            }
            $inner_join = array(
                'listings' => array(
                'sort_field'    => $count,
                'noPresix'      => true,
                'join_field'    => 'user_sid',
                'join_field2'   => 'sid',
                'join'          => 'LEFT JOIN',
                'groupBy'       => '`users`.`sid`'
            ));
        } elseif ($sorting_field == 'Location_State') {
            $inner_join = array(
                'states' => array(
                'sort_field'    => 'state_name',
                'noPresix'      => true,
                'join_field'    => 'sid',
                'join_field2'   => 'Location_State',
                'join'          => 'LEFT JOIN'
            ));
        }

        $searcher = new SJB_UserSearcher(false, $sorting_field, $sorting_order, $inner_join, array('limit' => ($page - 1) * $items_per_page, 'num_rows' => $items_per_page));
        $found_users = array();
        $found_users_sids = array();
        $found_users_by_criteria = $searcher->getObjectsByCriteria($criteria, null, array(), true);
        $foundObjectSIDs = $searcher->getFoundObjectSIDs();

        // display search form
        $tp->display($template);

        $criteria_saver->setSession($_REQUEST, $foundObjectSIDs);
        if (count($foundObjectSIDs) > 0) {
            $listingType = SJB_ListingTypeManager::getListingTypeInfoBySID($listing_type_sid);
            $countListings = SJB_ListingDBManager::getActiveAndApproveJobsNumberForUsers($foundObjectSIDs, $listingType);
        }
        foreach ($found_users_by_criteria as $id => $user) {
            $listingsNumber = isset($countListings[$id]) ? $countListings[$id] : 0;
            $user->addProperty(array('id' => 'countListings', 'type' => 'string', 'value' => $listingsNumber));
            if ($user->getProperty('CompanyName')) {
                $found_users_sids[$user->getSID()] = $user->getSID();
                $found_users[$id] = $user;
            }
        }
        $usersCount = $searcher->getAffectedRows();

        $form_collection = new SJB_FormCollection($found_users);
        $form_collection->registerTags($tp);
        $pages = array();

        for ($i = $page - 3; $i < $page + 3; $i++) {
            if ($i > 0)
                $pages[] = $i;
            if ($i * $items_per_page > $usersCount)
                break;
        }

        $totalPages = ceil($usersCount / $items_per_page);
        if (empty($totalPages))
            $totalPages = 1;

        if (array_search(1, $pages) === false)
            array_unshift($pages, 1);
        if (array_search($totalPages, $pages) === false)
            array_push($pages, $totalPages);

        $tp->assign("sorting_order", $sorting_order);
        $tp->assign("sorting_field", $sorting_field);
        $tp->assign("found_users_sids", $found_users_sids);
        $tp->assign("companies_per_page", $items_per_page);
        $tp->assign("searchId", $searchId);
        $tp->assign("usersCount", $usersCount);
        $tp->assign("current_page", $page);
        $tp->assign("pages_number", $totalPages);
        $tp->display('search_result_company.tpl');
    }
    else {
        // display search form
        $tp->display($template);
    }
}

0 个答案:

没有答案