iaField::getAcoFieldsList PHP 메소드

getAcoFieldsList() 공개 정적인 메소드

getAcoFieldsList
public static getAcoFieldsList ( $pageName = null, $itemName = null, $aWhere = '', $aAllFieldInfo = false, $aItemData = false, $params = [] )
    public static function getAcoFieldsList($pageName = null, $itemName = null, $aWhere = '', $aAllFieldInfo = false, $aItemData = false, $params = array())
    {
        $iaCore = iaCore::instance();
        $iaView =& $iaCore->iaView;
        $iaAcl = $iaCore->factory('acl');
        $pageName = $pageName ? $pageName : $iaView->name();
        $itemName = $itemName ? $itemName : $iaView->get('extras');
        $selection = 'f.' . ($aAllFieldInfo || $pageName == 'admin' ? iaDb::ALL_COLUMNS_SELECTION : '`name`');
        if (isset($params['selection']) && $params['selection']) {
            $selection = $params['selection'];
        }
        $sql = "SELECT {$selection} ";
        if (iaCore::ADMIN == $pageName) {
            $aAllFieldInfo = true;
            $sql .= "FROM `" . self::getTable(true) . "` f " . "WHERE f.`status` = 'active' AND f.`item` = '{$itemName}' " . ($aWhere ? ' AND ' . $aWhere : '');
        } elseif ('all' == $pageName) {
            $sql .= "FROM `" . self::getTable(true) . "` f " . "WHERE " . "f.`status` = 'active' AND " . "f.`item` = '{$itemName}' AND " . "f.`adminonly` = 0 " . ($aWhere ? ' AND ' . $aWhere : '');
            $sql .= $aItemData['sponsored_plan_id'] && (!$aItemData || $aItemData['sponsored']) ? " AND (`plans`='' OR FIND_IN_SET('{$aItemData['sponsored_plan_id']}', `plans`)) " : " AND `plans`='' ";
        } else {
            $sql .= 'FROM `' . $iaCore->iaDb->prefix . self::getTablePages() . '` fp ' . 'LEFT JOIN `' . $iaCore->iaDb->prefix . self::getTable() . '` f ON (fp.`field_id` = f.`id`) ' . "WHERE fp.`page_name` = '{$pageName}' AND f.`status` = 'active' AND f.`item` = '{$itemName}' AND f.`adminonly` = 0 " . ($aWhere ? ' AND ' . $aWhere : '');
            $sql .= !empty($aItemData['sponsored_plan_id']) && (!$aItemData || $aItemData['sponsored']) ? " AND (`plans`='' OR FIND_IN_SET('{$aItemData['sponsored_plan_id']}', `plans`)) " : " AND `plans`='' ";
        }
        $sql .= 'ORDER BY ' . (empty($params['order']) ? 'f.`order`' : $params['order']);
        $rows = $iaCore->iaDb->getAll($sql);
        $fieldNames = array();
        foreach ($rows as $key => $entry) {
            if (isset($entry['name']) && $entry['name']) {
                if ($iaAcl->checkAccess('field', $itemName . '_' . $entry['name'])) {
                    $fieldNames[$entry['id']] = $entry['name'];
                    continue;
                }
            }
            unset($rows[$key]);
        }
        self::_handleRelations($itemName, $fieldNames, $rows);
        if ($aAllFieldInfo) {
            return $rows;
        }
        $fields = array();
        if ($rows) {
            foreach ($rows as $row) {
                $fields[] = $row['name'];
            }
        }
        return $fields;
    }

Usage Example

예제 #1
0
 protected function _preSaveEntry(array &$entry, array $data, $action)
 {
     $this->_iaCore->startHook('adminAddMemberValidation');
     $iaAcl = $this->_iaCore->factory('acl');
     $iaField = $this->_iaCore->factory('field');
     $fields = iaField::getAcoFieldsList(iaCore::ADMIN, $this->_itemName);
     // below is the hacky way to force the script to upload files to the appropriate user's folder
     // FIXME
     $activeUser = iaUsers::getIdentity(true);
     $_SESSION[iaUsers::SESSION_KEY] = array('id' => $this->getEntryId(), 'username' => $data['username']);
     list($entry, $error, $this->_messages, ) = $iaField->parsePost($fields, $entry);
     $_SESSION[iaUsers::SESSION_KEY] = $activeUser;
     //
     if ($iaAcl->isAccessible($this->getName(), 'usergroup')) {
         if (isset($data['usergroup_id'])) {
             $entry['usergroup_id'] = array_key_exists($data['usergroup_id'], $this->_userGroups) ? $data['usergroup_id'] : iaUsers::MEMBERSHIP_REGULAR;
         }
     } elseif (iaCore::ACTION_ADD == $action) {
         $entry['usergroup_id'] = iaUsers::MEMBERSHIP_REGULAR;
     }
     if ($error) {
         return false;
     }
     $stmt = '`email` = :email';
     if (iaCore::ACTION_EDIT == $action) {
         if (isset($entry['status']) && $entry['status'] == $this->_iaDb->one('status', iaDb::convertIds((int) $this->getEntryId()))) {
             unset($entry['status']);
         }
         $stmt .= ' AND `id` != ' . (int) $this->getEntryId();
     }
     if ($this->_iaDb->exists($stmt, $entry)) {
         $this->addMessage('error_duplicate_email');
     }
     if ($this->_iaDb->exists('`username` = :username AND `id` != :id', array('username' => $entry['username'], 'id' => $this->getEntryId()))) {
         $this->addMessage('username_already_taken');
     }
     if ($iaAcl->checkAccess($this->getName(), 'password') || iaCore::ACTION_ADD == $action) {
         $this->_password = trim($data['_password']);
         if ($this->_password || !empty($data['_password2'])) {
             $entry['password'] = $this->getHelper()->encodePassword($this->_password);
             iaUtil::loadUTF8Functions('ascii', 'validation', 'bad', 'utf8_to_ascii');
             if (empty($entry['password'])) {
                 $this->addMessage('error_password_empty');
             } elseif (!utf8_is_ascii($entry['password'])) {
                 $this->addMessage(iaLanguage::get('password') . ': ' . iaLanguage::get('ascii_required'));
             } elseif ($entry['password'] != $this->getHelper()->encodePassword($data['_password2'])) {
                 $this->addMessage('error_password_match');
             }
         }
     }
     if (empty($data['_password']) && iaCore::ACTION_ADD == $action) {
         $this->addMessage('error_password_empty');
     }
     return !$this->getMessages();
 }
All Usage Examples Of iaField::getAcoFieldsList