Pommo_Rules::addFieldRule PHP Method

addFieldRule() public method

public addFieldRule ( &$group, &$field, &$logic, &$values, $type )
    function addFieldRule(&$group, &$field, &$logic, &$values, $type = 0)
    {
        global $pommo;
        $dbo =& Pommo::$_dbo;
        $type = $type == 'or' ? 1 : 0;
        // remove previous filters
        Pommo_Rules::deleteRule($group, $field, $logic);
        // get the field
        require_once Pommo::$_baseDir . 'classes/Pommo_Fields.php';
        $field = current(Pommo_Fields::get(array('id' => $field)));
        foreach ($values as $value) {
            // if this is a date type field, convert the values from human readable date
            //  strings to timestamps appropriate for matching
            if ($field['type'] == 'date') {
                $value = Pommo_Helper::timeFromStr($value);
            }
            $v[] = $dbo->prepare("(%i,%i,'%s','%s',%i)", array($group, $field['id'], $logic, $value, $type));
        }
        $query = "\n            INSERT INTO " . $dbo->table['group_rules'] . "\n            (group_id, field_id, logic, value, type)\n            VALUES " . implode(',', $v);
        return $dbo->affected($query);
    }

Usage Example

Example #1
0
     switch ($_REQUEST['logic']) {
         case 'is_in':
         case 'not_in':
             Pommo_Rules::addGroupRule($state['group'], $_REQUEST['field'], $_REQUEST['logic']);
             break;
         case 'true':
         case 'false':
             Pommo_Rules::addBoolRule($state['group'], $_REQUEST['field'], $_REQUEST['logic']);
             break;
         case 'is':
         case 'not':
         case 'less':
         case 'greater':
             $values = array_unique($_REQUEST['match']);
             $type = $_REQUEST['type'] == 'or' ? 'or' : 'and';
             Pommo_Rules::addFieldRule($state['group'], $_REQUEST['field'], $_REQUEST['logic'], $values, $type);
             break;
     }
     $json->add('callbackFunction', 'redirect');
     $json->add('callbackParams', Pommo::$_baseUrl . 'groups_edit.php');
     $json->serve();
     break;
 case 'updateRule':
     require_once Pommo::$_baseDir . 'classes/Pommo_Sql.php';
     $group =& current(Pommo_Groups::get(array('id' => $state['group'])));
     $rules = Pommo_Sql::sortRules($group['rules']);
     switch ($_REQUEST['request']) {
         case 'update':
             if ($_REQUEST['type'] == 'or' && count($rules['and']) < 2) {
                 $json->add('callbackFunction', 'resume');
                 $json->success(Pommo::_T('At least 1 "and" rule must exist before an "or" rule takes effect.'));