コード例 #1
0
ファイル: OOB_model_type.php プロジェクト: pablius/oob-n1
 private static function __SQLsearch($field, $comparison, $value, $connector, $type, $join_name)
 {
     global $ari;
     $table = static::getTable();
     $operadores = array();
     $operadores["eq"] = "=";
     $operadores["lt"] = "<";
     $operadores["gt"] = ">";
     $operadores["eqgt"] = ">=";
     $operadores["ltgt"] = "<=";
     $operadores["neq"] = "!=";
     $constraint = "";
     //le agregue esto para que funcione la informacion adicional de contactos
     if ($table == 'contactos_informacion_adicional_control_value' && $field != 'control') {
         switch ($type) {
             case 'numeric':
                 $constraint = 'isInt';
                 break;
             case 'date':
                 $constraint = 'object-Date';
                 break;
         }
     } else {
         if (in_array($field, array('id', 'status')) && $type != 'list') {
             $constraint = 'isInt';
         } elseif (in_array($field, array('id', 'status')) && $type == 'list') {
             $constraint = 'list';
         } else {
             $constraint = static::$public_properties[$field];
         }
     }
     switch ($constraint) {
         case 'isNumeric':
         case 'isFloat':
         case 'isInt':
             if (!is_numeric($value) && !is_float($value) && !OOB_validatetext::isInt($value)) {
                 return false;
             }
             $operador_inicio = $operadores[$comparison];
             $operador_fin = "";
             break;
         case 'object-Date':
             $value = $ari->db->qMagic(date('Y-m-d', strtotime($value)));
             // @fixme : formato de fecha, revisar
             $operador_inicio = $operadores[$comparison];
             $operador_fin = "";
             break;
         case 'isArray':
             return false;
             // no valido
             break;
         case 'isBool':
             if ($value == true) {
                 $value = 1;
             } else {
                 $value = 0;
             }
             $operador_inicio = " = ";
             $operador_fin = "";
             break;
         case 'list':
             // $value = $ari->db->qMagic($value)
             $operador_inicio = "IN ( ";
             $operador_fin = ") ";
             break;
         default:
             $value = $ari->db->qMagic('%' . $value . '%');
             $operador_inicio = " LIKE ";
             $operador_fin = "";
             break;
     }
     return ' ' . $connector . ' ' . $join_name . '.' . $field . ' ' . $operador_inicio . $value . $operador_fin;
 }
コード例 #2
0
ファイル: OOB_tree.php プロジェクト: pablius/oob-n1
 /** Parametros:
  * $selected  = (oob_tree_node o TREE_ROOT), el nodo que va a volver seleccionado en el array
  * $node  = (oob_tree_node o TREE_ROOT), el nodo en el que estamos parados (para considerar padres e hijos)
  * $root = (oob_tree_node o TREE_ROOT), el nodo desde donde empieza a armarse el arbol
  * $class_name = (false, string o array), nombre de la clase/clases que va a devolver el arbol
  * $initialize = (bool), inicializa los objetos del arbol (penalidad de velocidad, necesario si quiere validar STATUS)
  * $cantNiveles = (int), cantidad de niveles que quiere que el arbol recorra, por defecto todos
  * 
  * Return: Este objeto devuelve un array con 3 array dentro (tree, childs, parents), cada uno a su vez dentro tiene:
  * donde ['nivel'], es su nivel en el árbol
  *       ['nodo'], es un objeto OOB_tree_node
  * */
 public function getTreeAdvanced($selected = TREE_ROOT, $node = TREE_ROOT, $root = TREE_ROOT, $class_names = false, $initialize = true, $cantNiveles = 99999)
 {
     global $ari;
     $ari->internalChrono('getTreeAdvanced_start');
     $return['tree'] = array();
     $return['childs'] = array();
     $return['parents'] = array();
     // validamos los datos viste
     if (!is_a($node, 'OOB_tree_node')) {
         $node = new OOB_tree_root($this->id);
     }
     if (is_a($selected, 'OOB_tree_node')) {
         $selected = $selected->id;
     }
     $init = true;
     if (OOB_validatetext::isBool($initialize)) {
         $init = $initialize;
     }
     $levels = 0;
     if (OOB_validatetext::isInt($cantNiveles)) {
         $levels = $cantNiveles;
     }
     if (!is_array($class_names)) {
         if (!$class_names) {
             $classes = false;
         } else {
             $classes[] = $class_names;
         }
     } else {
         $classes = $class_names;
     }
     //my_nivel contendra el nivel del nodo cargado en la pagina
     $my_nivel = 0;
     //bandera q permite o no la carga de hijos del nodo cargado
     $flagCargaHijos = false;
     if ($nodes = $this->getTree($root, $classes, $init)) {
         $i = 0;
         //array donde acumulo las derecha de los nodos de una raiz completa
         $niveles = array();
         foreach ($nodes as $n) {
             $ok = USED;
             if ($init) {
                 $ok = $n->object()->get('status');
             }
             if ($ok != DELETED) {
                 $cuenta = count($niveles);
                 // no entiendo que hace esto, pero anda de diez
                 if ($cuenta > 0) {
                     while ($niveles[$cuenta - 1] < $n->right()) {
                         array_pop($niveles);
                         $cuenta = count($niveles);
                         if ($cuenta == 0) {
                             //si termino cualquier rama desabilito la carga de hijos
                             $flagCargaHijos = false;
                             break;
                         }
                     }
                 }
                 // si hay limitación de nivel, la validamos
                 if ($levels > $cuenta || $levels == 0) {
                     // lo ponemos en el arbol
                     $return['tree'][$i]['nivel'] = "";
                     $return['tree'][$i]['node'] = $n;
                     // marcamos al elegido	 (selected)
                     if ($selected == $n->id()) {
                         $return['tree'][$i]['selected'] = "selected";
                     }
                     //guardo el nivel del nodo cargado en la pagina y activo la carga de sus hijos
                     //ya q llegue al nodo cargado en el recorrido
                     if ($n->left() == $node->left()) {
                         $my_nivel = $cuenta;
                         $flagCargaHijos = true;
                     }
                     //busco los padres del nodo cargado los cuales deben tener una izquierda mayor q
                     //el nodo cargado y una derecha mayor q la derecha del nodo cargado
                     if ($n->left() < $node->left() && $n->right() > $node->right()) {
                         $return['parents'][] = $return['tree'][$i];
                     } else {
                         if ($cuenta == 0 && $n->id() != $node->id() && $root !== TREE_ROOT || $my_nivel + 1 == $cuenta && $flagCargaHijos && $node->right() > $n->right() && $root === TREE_ROOT) {
                             $return['childs'][] = $return['tree'][$i];
                         }
                     }
                     $return['tree'][$i]['nivel'] .= str_repeat('--', $cuenta);
                     $niveles[] = $n->right();
                     //['right'];
                     ++$i;
                 }
                 // end if nivel
             }
             //end if enabled
         }
         //end foreach
     }
     // end if
     $ari->internalChrono('getTreeAdvanced_end');
     return $return;
 }