public function generateDataIndicadorOnline($treeId, $indicadorParametro)
 {
     $criteria = new Criteria();
     $criteria->add(IndicatorsScPeer::TREE_ID, $treeId);
     $criteria->add(IndicatorsScPeer::FLAG, '%habilitado%', Criteria::LIKE);
     /*obtengo el cualquier nodo habilitado de la estrategia
      * para obtener la cantidad de proyecciones que tenia y asi asignarles la
      * misma cantidad de proyecciones para el nuevo indicador.
      */
     $indicador = IndicatorsScPeer::doSelectOne($criteria);
     if (is_object($indicador)) {
         $criteria->clear();
         $criteria->add(ProjectionsIndicatorsCsPeer::INDICADOR_ID, $indicador->getId());
         $countProjection = ProjectionsIndicatorsCsPeer::doCount($criteria);
         $listProjection = ProjectionsIndicatorsCsPeer::doSelect($criteria);
         if ($countProjection > 0) {
             /*Asigno la misma cantidad de proyecciones al nuevo indicador*/
             foreach ($listProjection as $row) {
                 $proyection = new ProjectionsIndicatorsCs();
                 $proyection->setIndicadorId($indicadorParametro->getId());
                 $proyection->setFecha($row->getFecha());
                 $proyection->setValorMinimo($indicadorParametro->getValorMinimo());
                 $proyection->setValorDeseado($indicadorParametro->getValorDeseado());
                 $proyection->setValorOptimo($indicadorParametro->getValorOptimo());
                 $proyection->setFlag('{}');
                 $proyection->save();
             }
             return array("success" => true, "message" => "exito");
         } else {
             return array("success" => false, "message" => "count 0 list");
         }
     } else {
         return array("success" => false, "message" => "not object found");
     }
 }
 /**
  * Executes index action
  *
  * @param sfRequest $request A request object
  */
 public function executeIndex(sfWebRequest $request)
 {
     $selector = $request->getParameter('select');
     $selector = $selector == "" ? 'execution' : $selector;
     $user = $this->getUser()->getAttribute('s_current_user', null);
     if ($user != null) {
         $this->selector = $selector;
         $criterio = new Criteria();
         $criterio->add(TreeScPeer::USER_ID, $user->getId());
         $criterio->add(TreeScPeer::FLAG, 1);
         $list_tree = TreeScPeer::doSelect($criterio);
         $this->list = $list_tree;
         $criteria = new Criteria();
         $criteria->add(TreeScPeer::USER_ID, $user->getId());
         $criteria->add(TreeScPeer::PRODUCCION, '%production%', Criteria::LIKE);
         $criteria->add(TreeScPeer::FLAG, 1);
         $user_tree = TreeScPeer::doSelect($criteria);
         $this->lista_tree_user = $user_tree;
         $criteria->clear();
         // indicadores a los cuales este usuario esta com responsables
         $criteria->add(IndicatorsScPeer::RESPONSABLE_ID, $user->getId());
         $criteria->add(IndicatorsScPeer::FLAG, '%habilitado%', Criteria::LIKE);
         $criteria->add(TreeScPeer::FLAG, 1);
         $criteria->add(TreeScPeer::PRODUCCION, '%production%', Criteria::LIKE);
         $criteria->addJoin(TreeScPeer::ID, IndicatorsScPeer::TREE_ID);
         $criteria->addGroupByColumn(IndicatorsScPeer::TREE_ID);
         $user_indicators = IndicatorsScPeer::doSelect($criteria);
         $criteria->clear();
         $this->lista_indicators_user = $user_indicators;
         return sfView::SUCCESS;
     } else {
         return sfView::ERROR;
     }
 }
 public function updateDataIndicadores($idTree)
 {
     $criterio = new Criteria();
     $criterio->add(IndicatorsScPeer::TREE_ID, $idTree);
     $criterio->add(IndicatorsScPeer::ULTIMO_NODO, 1, Criteria::NOT_EQUAL);
     $listIndicadores = IndicatorsScPeer::doSelect($criterio);
     $countListIndicadores = IndicatorsScPeer::doCount($criterio);
     if ($countListIndicadores > 0) {
         foreach ($listIndicadores as $row) {
             $criteria = new Criteria();
             $criteria->add(DataIndicadoresPeer::INDICADOR_ID, $row->getId());
             DataIndicadoresPeer::doDelete($criteria);
         }
     }
     return array("success" => true, "message" => "exito");
 }
 public function haveChildren($treeBean = null)
 {
     if ($treeBean != null && is_object($treeBean)) {
         $criterio_busqueda = new Criteria();
         $criterio_busqueda->add(IndicatorsScPeer::TREE_ID, $treeBean->getId());
         $criterio_busqueda->add(IndicatorsScPeer::FLAG, '%habilitado%', Criteria::LIKE);
         $listIndicator = IndicatorsScPeer::doSelect($criterio_busqueda);
         $countIndicator = IndicatorsScPeer::doCount($criterio_busqueda);
         if ($countIndicator > 0) {
             return array("success" => true, "message" => "{haveChildren}-success", "object" => $listIndicator);
         } else {
             return array("success" => false, "message" => "{haveChildren}-objeto no encontrado");
         }
     } else {
         return array("success" => false, "message" => "{haveChildren}-parametro invalido");
     }
 }
 private function fn_EliminarIndicadores($treeId)
 {
     /*Para eliminar indicadores por cada indicador*/
     $criteria = new Criteria();
     $criteria->add(IndicatorsScPeer::TREE_ID, $treeId);
     $listaIndicadores = IndicatorsScPeer::doSelect($criteria);
     if (count($listaIndicadores) > 0) {
         foreach ($listaIndicadores as $indicador) {
             //hay que buscar la dataIndicadores y eliminarlas
             $criteriaDataIndicadores = new Criteria();
             $criteriaDataIndicadores->add(DataIndicadoresPeer::INDICADOR_ID, $indicador->getId());
             DataIndicadoresPeer::doDelete($criteriaDataIndicadores);
             //hay que buscar las proyecciones y eliminarlas
             $criteriaProyecciones = new Criteria();
             $criteriaProyecciones->add(ProjectionsIndicatorsCsPeer::INDICADOR_ID, $indicador->getId());
             ProjectionsIndicatorsCsPeer::doDelete($criteriaProyecciones);
         }
         //acabado la eliminacion se procede a eliminar los indicadores
         IndicatorsScPeer::doDelete($criteria);
     }
 }
 /**
  * Selects a collection of AsignacionSc objects pre-filled with all related objects except UserSc.
  *
  * @param      Criteria  $criteria
  * @param      PropelPDO $con
  * @param      String    $join_behavior the type of joins to use, defaults to Criteria::LEFT_JOIN
  * @return     array Array of AsignacionSc objects.
  * @throws     PropelException Any exceptions caught during processing will be
  *		 rethrown wrapped into a PropelException.
  */
 public static function doSelectJoinAllExceptUserSc(Criteria $criteria, $con = null, $join_behavior = Criteria::LEFT_JOIN)
 {
     $criteria = clone $criteria;
     // Set the correct dbName if it has not been overridden
     // $criteria->getDbName() will return the same object if not set to another value
     // so == check is okay and faster
     if ($criteria->getDbName() == Propel::getDefaultDB()) {
         $criteria->setDbName(self::DATABASE_NAME);
     }
     AsignacionScPeer::addSelectColumns($criteria);
     $startcol2 = AsignacionScPeer::NUM_COLUMNS - AsignacionScPeer::NUM_LAZY_LOAD_COLUMNS;
     GrupoTrabajoScPeer::addSelectColumns($criteria);
     $startcol3 = $startcol2 + (GrupoTrabajoScPeer::NUM_COLUMNS - GrupoTrabajoScPeer::NUM_LAZY_LOAD_COLUMNS);
     TreeScPeer::addSelectColumns($criteria);
     $startcol4 = $startcol3 + (TreeScPeer::NUM_COLUMNS - TreeScPeer::NUM_LAZY_LOAD_COLUMNS);
     IndicatorsScPeer::addSelectColumns($criteria);
     $startcol5 = $startcol4 + (IndicatorsScPeer::NUM_COLUMNS - IndicatorsScPeer::NUM_LAZY_LOAD_COLUMNS);
     $criteria->addJoin(AsignacionScPeer::GRUPO_ID, GrupoTrabajoScPeer::ID, $join_behavior);
     $criteria->addJoin(AsignacionScPeer::TREE_ID, TreeScPeer::ID, $join_behavior);
     $criteria->addJoin(AsignacionScPeer::INDICADOR_ID, IndicatorsScPeer::ID, $join_behavior);
     // symfony_behaviors behavior
     foreach (sfMixer::getCallables(self::getMixerPreSelectHook(__FUNCTION__)) as $sf_hook) {
         call_user_func($sf_hook, 'BaseAsignacionScPeer', $criteria, $con);
     }
     $stmt = BasePeer::doSelect($criteria, $con);
     $results = array();
     while ($row = $stmt->fetch(PDO::FETCH_NUM)) {
         $key1 = AsignacionScPeer::getPrimaryKeyHashFromRow($row, 0);
         if (null !== ($obj1 = AsignacionScPeer::getInstanceFromPool($key1))) {
             // We no longer rehydrate the object, since this can cause data loss.
             // See http://propel.phpdb.org/trac/ticket/509
             // $obj1->hydrate($row, 0, true); // rehydrate
         } else {
             $cls = AsignacionScPeer::getOMClass(false);
             $obj1 = new $cls();
             $obj1->hydrate($row);
             AsignacionScPeer::addInstanceToPool($obj1, $key1);
         }
         // if obj1 already loaded
         // Add objects for joined GrupoTrabajoSc rows
         $key2 = GrupoTrabajoScPeer::getPrimaryKeyHashFromRow($row, $startcol2);
         if ($key2 !== null) {
             $obj2 = GrupoTrabajoScPeer::getInstanceFromPool($key2);
             if (!$obj2) {
                 $cls = GrupoTrabajoScPeer::getOMClass(false);
                 $obj2 = new $cls();
                 $obj2->hydrate($row, $startcol2);
                 GrupoTrabajoScPeer::addInstanceToPool($obj2, $key2);
             }
             // if $obj2 already loaded
             // Add the $obj1 (AsignacionSc) to the collection in $obj2 (GrupoTrabajoSc)
             $obj2->addAsignacionSc($obj1);
         }
         // if joined row is not null
         // Add objects for joined TreeSc rows
         $key3 = TreeScPeer::getPrimaryKeyHashFromRow($row, $startcol3);
         if ($key3 !== null) {
             $obj3 = TreeScPeer::getInstanceFromPool($key3);
             if (!$obj3) {
                 $cls = TreeScPeer::getOMClass(false);
                 $obj3 = new $cls();
                 $obj3->hydrate($row, $startcol3);
                 TreeScPeer::addInstanceToPool($obj3, $key3);
             }
             // if $obj3 already loaded
             // Add the $obj1 (AsignacionSc) to the collection in $obj3 (TreeSc)
             $obj3->addAsignacionSc($obj1);
         }
         // if joined row is not null
         // Add objects for joined IndicatorsSc rows
         $key4 = IndicatorsScPeer::getPrimaryKeyHashFromRow($row, $startcol4);
         if ($key4 !== null) {
             $obj4 = IndicatorsScPeer::getInstanceFromPool($key4);
             if (!$obj4) {
                 $cls = IndicatorsScPeer::getOMClass(false);
                 $obj4 = new $cls();
                 $obj4->hydrate($row, $startcol4);
                 IndicatorsScPeer::addInstanceToPool($obj4, $key4);
             }
             // if $obj4 already loaded
             // Add the $obj1 (AsignacionSc) to the collection in $obj4 (IndicatorsSc)
             $obj4->addAsignacionSc($obj1);
         }
         // if joined row is not null
         $results[] = $obj1;
     }
     $stmt->closeCursor();
     return $results;
 }
 public function executeAjax_show_gauge_indicators(sfWebRequest $request)
 {
     $id = $request->getParameter('id_indicators');
     //busco el id del indicador
     $indicador = IndicatorsScPeer::retrieveByPK($id);
     $this->nombre = $indicador->getTitulo();
     $minimo = $indicador->getValorMinimo();
     $optimo = $indicador->getValorOptimo();
     $deseado = $indicador->getValorDeseado();
     $valor_actual = $indicador->getValorActualEntregado();
     if ($valor_actual != null) {
         $divisor = $optimo - $minimo;
         if ($valor_actual <= $minimo) {
             $valor_porcentaje = 0;
         } else {
             $dividendo = $valor_actual - $minimo;
             $valor_porcentaje = $dividendo * 100 / $divisor;
         }
         $this->valor_porcentaje = $valor_porcentaje;
         //para mostrar
         $this->minimo = $minimo;
         $this->optimo = $optimo;
         $this->deseado = $deseado;
         $this->actual = $valor_actual;
     } else {
         $this->valor_porcentaje = null;
         //para mostrar
         $this->minimo = $minimo;
         $this->optimo = $optimo;
         $this->deseado = $deseado;
         $this->actual = null;
     }
 }
 /**
  * If this collection has already been initialized with
  * an identical criteria, it returns the collection.
  * Otherwise if this UserSc is new, it will return
  * an empty collection; or if this UserSc has previously
  * been saved, it will retrieve related IndicatorsScs from storage.
  *
  * This method is protected by default in order to keep the public
  * api reasonable.  You can provide public methods for those you
  * actually need in UserSc.
  */
 public function getIndicatorsScsJoinTreeSc($criteria = null, $con = null, $join_behavior = Criteria::LEFT_JOIN)
 {
     if ($criteria === null) {
         $criteria = new Criteria(UserScPeer::DATABASE_NAME);
     } elseif ($criteria instanceof Criteria) {
         $criteria = clone $criteria;
     }
     if ($this->collIndicatorsScs === null) {
         if ($this->isNew()) {
             $this->collIndicatorsScs = array();
         } else {
             $criteria->add(IndicatorsScPeer::RESPONSABLE_ID, $this->id);
             $this->collIndicatorsScs = IndicatorsScPeer::doSelectJoinTreeSc($criteria, $con, $join_behavior);
         }
     } else {
         // the following code is to determine if a new query is
         // called for.  If the criteria is the same as the last
         // one, just return the collection.
         $criteria->add(IndicatorsScPeer::RESPONSABLE_ID, $this->id);
         if (!isset($this->lastIndicatorsScCriteria) || !$this->lastIndicatorsScCriteria->equals($criteria)) {
             $this->collIndicatorsScs = IndicatorsScPeer::doSelectJoinTreeSc($criteria, $con, $join_behavior);
         }
     }
     $this->lastIndicatorsScCriteria = $criteria;
     return $this->collIndicatorsScs;
 }
 public function executeSave_indicator(sfWebRequest $request)
 {
     $request->setRequestFormat('json');
     $indicadorId = $request->getParameter('indicatorId');
     $titulo = $request->getParameter('title');
     $descripcion = $request->getParameter('description');
     $valor_minimo = $request->getParameter('valueMin');
     $valor_deseado = $request->getParameter('valueDes');
     $valor_optimo = $request->getParameter('valueOpt');
     $responsable_id = $request->getParameter('responsableId');
     $responsable_email = $request->getParameter('responsableEmail');
     $grupo_trabajo_id = $request->getParameter('workGroup');
     $json_children = $request->getParameter('indicatorChildren');
     $json = json_decode($json_children);
     if (count($json) > 0) {
         foreach ($json as $row) {
             $indicador_children = IndicatorsScPeer::retrieveByPK($row->{'pk'});
             $indicador_children->setConectoresConfigure($row->{'values'});
             $indicador_children->save();
         }
     }
     //primero validamos y esta logeado
     //segundo validamos si el idicador existe
     //tercero verificamos si se asigno un usuario
     //(si se le asigno un usuario)cuarto vamos a revisar si el usuario que es asignado esta en e grupo de trabajo
     /*si no esta en grupo de trabajo envio una solictud ( antes verifico si no le mande una solicitud antes)
      * por que no se va estar mandando varias solicitudes al mismo usuario
      * en este caso las solicitudes son 1 vez por grupo de trabajo y no por indicador
      */
     //despues de vefiricar grabamos la primera vesion del indicador con los datos secundarios
     $user = $this->getUser()->getAttribute(sfConfig::get('app_session_current_user'), null);
     if ($user != null) {
         $indicador = IndicatorsScPeer::retrieveByPK($indicadorId);
         if (is_object($indicador)) {
             if ($responsable_email != "") {
                 /* aca vamos crear el registro de asignaciones, esta tabla me permite manejar un
                    historial  de las asignacion de resposanble x indicador
                    asi podre ver todas los responsables de un determinado indicador.*/
                 $asignacion_indicador = new AsignacionSc();
                 $asignacion_indicador->setGrupoId($grupo_trabajo_id);
                 $asignacion_indicador->setEmail($responsable_email);
                 $asignacion_indicador->setTreeId($indicador->getTreeId());
                 $asignacion_indicador->setIndicadorId($indicador->getId());
                 $asignacion_indicador->setCreateAt(time());
                 $asignacion_indicador->setUpdateAt(time());
                 /**********************************************************************/
                 if ($responsable_id != "") {
                     $asignacion_indicador->setFlag(json_encode(array("estado" => true, "owner_id" => $user->getId())));
                     $asignacion_indicador->setUserId($responsable_id);
                     $indicador->setResponsableId($responsable_id);
                     $indicador->setEmailResponsable($responsable_email);
                 } else {
                     //envio solicitud
                     //antes verificar si no le enviando una solicitud antes
                     $rsp = $this->evaluar_solicitud($responsable_email, $grupo_trabajo_id, $user);
                     if ($rsp['success']) {
                         $indicador->setEmailResponsable($responsable_email);
                         $indicador->setResponsableId(null);
                         $asignacion_indicador->setFlag(json_encode(array("estado" => false, "owner_id" => $user->getId())));
                     } else {
                         $this->message = $rsp['message'];
                         return sfView::ERROR;
                     }
                 }
                 $asignacion_indicador->save();
             } else {
                 $indicador->setResponsableId(null);
                 $indicador->setEmailResponsable('');
             }
             if ($descripcion != "") {
                 $indicador->setDescripcion($descripcion);
             }
             if ($valor_minimo != "") {
                 $indicador->setValorMinimo($valor_minimo);
             }
             if ($valor_deseado != "") {
                 $indicador->setValorDeseado($valor_deseado);
             }
             if ($valor_optimo != "") {
                 $indicador->setValorOptimo($valor_optimo);
             }
             if ($titulo != "") {
                 $indicador->setTitulo($titulo);
             }
             $indicador->save();
         } else {
             $this->message = 'not found indicator';
             return sfView::ERROR;
         }
     } else {
         $this->message = 'session expired';
         return sfView::ERROR;
     }
 }
 public function current_color_production($indicator_id, $array_color)
 {
     $indicator = IndicatorsScPeer::retrieveByPK($indicator_id);
     $valor_minimo = $indicator->getValorMinimo();
     $valor_desaado = $indicator->getValorDeseado();
     $valor_optimo = $indicator->getValorOptimo();
     $valor_actual = $indicator->getValorActualEntregado();
     if ($valor_actual >= $valor_desaado) {
         return $array_color[0];
     } elseif ($valor_actual >= $valor_minimo) {
         return $array_color[1];
     } else {
         return $array_color[2];
     }
 }
 private function return_array_children($id)
 {
     $indicadorBean = IndicatorsScPeer::retrieveByPK($id);
     if (is_object($indicadorBean)) {
         $criterio_indicadores = new Criteria();
         $criterio_indicadores->add(IndicatorsScPeer::FLAG, '%habilitado%', Criteria::LIKE);
         $criterio_indicadores->add(IndicatorsScPeer::PARENTS, '%p' . $indicadorBean->getId() . 's%', Criteria::LIKE);
         $lista_indicadores = IndicatorsScPeer::doSelect($criterio_indicadores);
         if (count($lista_indicadores) > 0) {
             return $lista_indicadores;
         } else {
             return null;
         }
     } else {
         return null;
     }
 }
 private function get_hijos($padre_id)
 {
     if ($padre_id != 0) {
         $criterio = new Criteria();
         $criterio->add(IndicatorsScPeer::PREVIOUS_ID, $padre_id);
         $criterio->add(IndicatorsScPeer::FLAG, '%habilitado%', Criteria::LIKE);
         $list = IndicatorsScPeer::doSelect($criterio);
         if (count($list) > 0) {
             return $list;
         } else {
             return null;
         }
     } else {
         return null;
     }
 }
 /**
  * Get the associated IndicatorsSc object
  *
  * @param      PropelPDO Optional Connection object.
  * @return     IndicatorsSc The associated IndicatorsSc object.
  * @throws     PropelException
  */
 public function getIndicatorsSc(PropelPDO $con = null)
 {
     if ($this->aIndicatorsSc === null && $this->indicador_id !== null) {
         $this->aIndicatorsSc = IndicatorsScPeer::retrieveByPk($this->indicador_id);
         /* The following can be used additionally to
         		   guarantee the related object contains a reference
         		   to this object.  This level of coupling may, however, be
         		   undesirable since it could result in an only partially populated collection
         		   in the referenced object.
         		   $this->aIndicatorsSc->addAsignacionScs($this);
         		 */
     }
     return $this->aIndicatorsSc;
 }
 /**
  * Retrieve multiple objects by pkey.
  *
  * @param      array $pks List of primary keys
  * @param      PropelPDO $con the connection to use
  * @throws     PropelException Any exceptions caught during processing will be
  *		 rethrown wrapped into a PropelException.
  */
 public static function retrieveByPKs($pks, PropelPDO $con = null)
 {
     if ($con === null) {
         $con = Propel::getConnection(IndicatorsScPeer::DATABASE_NAME, Propel::CONNECTION_READ);
     }
     $objs = null;
     if (empty($pks)) {
         $objs = array();
     } else {
         $criteria = new Criteria(IndicatorsScPeer::DATABASE_NAME);
         $criteria->add(IndicatorsScPeer::ID, $pks, Criteria::IN);
         $objs = IndicatorsScPeer::doSelect($criteria, $con);
     }
     return $objs;
 }
 private function verificar_insert_data($tree)
 {
     $tree = new TreeSc();
     $tree->getPeriodoId();
     //cada 15 dias
     $criterio = new Criteria();
     $criterio->add(IndicatorsScPeer::FLAG, '%habilitado%', Criteria::LIKE);
     $criterio->add(IndicatorsScPeer::TREE_ID, $tree->getId());
     $indicador = IndicatorsScPeer::doSelectOne($criterio);
     $criterio->clear();
     $criterio->add(DataIndicadoresPeer::INDICADOR_ID, $indicador->getId());
     $criterio->addDescendingOrderByColumn(DataIndicadoresPeer::CREATE_AT);
     $data = DataIndicadoresPeer::doSelectOne($criterio);
     $criterio = new Criteria();
     $criterio->add(DataIndicadoresPeer::INDICADOR_ID, 24);
     $criterio->addDescendingOrderByColumn(DataIndicadoresPeer::CREATE_AT);
     $data = DataIndicadoresPeer::doSelectOne($criterio);
     $ultima_de_fecha_registro = new DateTime($data->getCreateAt());
     $ultima_de_fecha_registro = $ultima_de_fecha_registro->format('Y-m-d');
     $array = explode('-', $ultima_de_fecha_registro);
     $fecha_actual = mktime(0, 0, 0, date('m'), date("d"), date('Y'));
     $fecha_actual = date('Y-m-d', $fecha_actual);
     /* if($fecha_proyectada<=$fecha_actual){}*/
     //semanal
     if ($tree->getPeriodoId() == 1) {
         $fecha_proyectada = mktime(0, 0, 0, $array[1], $array[2] + 7, $array[0]);
         $fecha_proyectada = date('Y-m-d', $fecha_proyectada);
         //cada quincena
     } elseif ($tree->getPeriodoId() == 2) {
         //si el dia de ultimo registro en menos a quince
         //busco el 15 de ese mes
         if ($array[2] < 15) {
             //la fecha programada es:
             $fecha_proyectada = $this->obtener_fecha_por_dia(15);
         } else {
             $fecha_proyectada = $this->obtener_fecha_por_dia(1);
         }
         //cada bimestre
     } elseif ($tree->getPeriodoId() == 3) {
         $fecha_proyectada = mktime(0, 0, 0, $array[1], $array[2] + 0, $array[0]);
         $fecha_proyectada = date('Y-m-d', $fecha_proyectada);
         //cada trimestre
     } else {
         $fecha_proyectada = mktime(0, 0, 0, $array[1], $array[2] + 0, $array[0]);
         $fecha_proyectada = date('Y-m-d', $fecha_proyectada);
     }
 }
 /**
  * Populates the object using an array.
  *
  * This is particularly useful when populating an object from one of the
  * request arrays (e.g. $_POST).  This method goes through the column
  * names, checking to see whether a matching key exists in populated
  * array. If so the setByName() method is called for that column.
  *
  * You can specify the key type of the array by additionally passing one
  * of the class type constants BasePeer::TYPE_PHPNAME, BasePeer::TYPE_STUDLYPHPNAME,
  * BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_NUM.
  * The default key type is the column's phpname (e.g. 'AuthorId')
  *
  * @param      array  $arr     An array to populate the object from.
  * @param      string $keyType The type of keys the array uses.
  * @return     void
  */
 public function fromArray($arr, $keyType = BasePeer::TYPE_PHPNAME)
 {
     $keys = IndicatorsScPeer::getFieldNames($keyType);
     if (array_key_exists($keys[0], $arr)) {
         $this->setId($arr[$keys[0]]);
     }
     if (array_key_exists($keys[1], $arr)) {
         $this->setTitulo($arr[$keys[1]]);
     }
     if (array_key_exists($keys[2], $arr)) {
         $this->setDescripcion($arr[$keys[2]]);
     }
     if (array_key_exists($keys[3], $arr)) {
         $this->setValorMinimo($arr[$keys[3]]);
     }
     if (array_key_exists($keys[4], $arr)) {
         $this->setValorDeseado($arr[$keys[4]]);
     }
     if (array_key_exists($keys[5], $arr)) {
         $this->setValorOptimo($arr[$keys[5]]);
     }
     if (array_key_exists($keys[6], $arr)) {
         $this->setResponsableId($arr[$keys[6]]);
     }
     if (array_key_exists($keys[7], $arr)) {
         $this->setTreeId($arr[$keys[7]]);
     }
     if (array_key_exists($keys[8], $arr)) {
         $this->setPreviousId($arr[$keys[8]]);
     }
     if (array_key_exists($keys[9], $arr)) {
         $this->setParents($arr[$keys[9]]);
     }
     if (array_key_exists($keys[10], $arr)) {
         $this->setIndicadoresHijosConfigure($arr[$keys[10]]);
     }
     if (array_key_exists($keys[11], $arr)) {
         $this->setUltimoNodo($arr[$keys[11]]);
     }
     if (array_key_exists($keys[12], $arr)) {
         $this->setValorActualEntregado($arr[$keys[12]]);
     }
     if (array_key_exists($keys[13], $arr)) {
         $this->setConectoresConfigure($arr[$keys[13]]);
     }
     if (array_key_exists($keys[14], $arr)) {
         $this->setOwnerIndicadores($arr[$keys[14]]);
     }
     if (array_key_exists($keys[15], $arr)) {
         $this->setEmailResponsable($arr[$keys[15]]);
     }
     if (array_key_exists($keys[16], $arr)) {
         $this->setFlag($arr[$keys[16]]);
     }
 }
 public function executeOauthcallback(sfWebRequest $request)
 {
     $code = $request->getParameter('code');
     $state = $request->getParameter('state');
     /* indicador_id */
     $handle_error = $request->getParameter('error');
     $indicator = IndicatorsScPeer::retrieveByPK($state);
     $id_tree = $indicator->getTreeId();
     $current_user = $this->getUser()->getAttribute(sfConfig::get('app_session_current_user'));
     $c = new Criteria();
     $c->add(UserGoogleConfigurationPeer::USER_ID, $current_user->getId());
     $google_configuration = UserGoogleConfigurationPeer::doSelectOne($c);
     if (!is_object($google_configuration)) {
         $this->getUser()->setFlash('msg', 'Primero debes configurar los datos de tu cuenta Google');
         $this->redirect('@configuration');
     }
     $google_client_id = $google_configuration->getGoogleClientId();
     $google_client_secret = $google_configuration->getGoogleClientSecret();
     if ($handle_error == 'access_denied') {
         //$this->getUser()->setFlash('message','Oops, ha ocurrido un error. Intenta nuevamente.');
         return $this->redirect('@edit_strategy?id_tree=' . $id_tree . '&node_id=' . $indicator->getId() . '&response=error&from=g');
     } else {
         if ($code != '' && $state != '') {
             $postdata = http_build_query(array('code' => $code, 'client_id' => $google_client_id, 'client_secret' => $google_client_secret, 'redirect_uri' => $this->getController()->genUrl('@oauthcallback', true), 'grant_type' => 'authorization_code'));
             $opts = array('http' => array('method' => 'POST', 'header' => "Content-type: application/x-www-form-urlencoded\r\n", 'content' => $postdata));
             $context = stream_context_create($opts);
             $result = @file_get_contents('https://accounts.google.com/o/oauth2/token', false, $context);
             if ($result === FALSE) {
                 $this->getUser()->setFlash('msg', 'Configurar correctamente');
                 $this->redirect('@configuration');
             } else {
                 $json = json_decode($result);
                 //consultamos el email del usuario, para adjuntarlo al registro
                 $userinfo = @file_get_contents('https://www.googleapis.com/oauth2/v1/userinfo?access_token=' . $json->{'access_token'});
                 $json_userinfo = json_decode($userinfo);
                 if ($userinfo === FALSE) {
                     $this->redirect('@edit_strategy?id_tree=' . $id_tree . '&node_id=' . $indicator->getId() . '&response=error&from=g');
                 } else {
                     /* si $json->{'refresh_token'} devuelve nada, es porque anteriormente ya permitió el acceso */
                     if (isset($json->{'refresh_token'})) {
                         //primera vez que pide permiso de acceso
                         //si existe el refresh_token, se reemplaza, ya que es porque anteriormente ha revocado el permiso de acceso
                         $c = new Criteria();
                         $c->add(IndicadoresScGoogleAnalyticsPeer::GOOGLE_USER_EMAIL, $json_userinfo->{'email'});
                         $c->add(IndicadoresScGoogleAnalyticsPeer::INDICADOR_ID, $indicator->getId());
                         $indicadores_sc_google_analytics_object = IndicadoresScGoogleAnalyticsPeer::doSelectOne($c);
                         if (is_object($indicadores_sc_google_analytics_object)) {
                             //obtener nodos "del arbol $id_tree" del mismo google_user_email
                             $c = new Criteria();
                             //$c->add(IndicatorsScPeer::TREE_ID, $id_tree);
                             $c->add(IndicatorsScPeer::FLAG, 'habilitado');
                             $c->add(IndicatorsScPeer::ULTIMO_NODO, 1);
                             $c->add(IndicatorsScPeer::DET_NETWORK_ATTRIBUTE_ID, null, Criteria::NOT_EQUAL);
                             $c->add(IndicadoresScGoogleAnalyticsPeer::GOOGLE_USER_EMAIL, $json_userinfo->{'email'});
                             $c->addJoin(IndicadoresScGoogleAnalyticsPeer::INDICADOR_ID, IndicatorsScPeer::ID);
                             $lista_nodos = IndicatorsScPeer::doSelect($c);
                             //obtener nodos con conector exterior pertenecientes al usuario $json_userinfo->{'email'}
                             foreach ($lista_nodos as $row) {
                                 //actualizar su refresh_token
                                 $c = new Criteria();
                                 $c->add(IndicadoresScGoogleAnalyticsPeer::INDICADOR_ID, $row->getId());
                                 $temp = IndicadoresScGoogleAnalyticsPeer::doSelectOne($c);
                                 $temp->setRefreshToken($json->{'refresh_token'});
                                 $temp->save();
                             }
                         } else {
                             //sino, se crea
                             $indicadores_sc_google_analytics = new IndicadoresScGoogleAnalytics();
                             $indicadores_sc_google_analytics->setRefreshToken($json->{'refresh_token'});
                             $indicadores_sc_google_analytics->setGoogleUserEmail($json_userinfo->{'email'});
                             $indicadores_sc_google_analytics->setIndicadorId($indicator->getId());
                             $indicadores_sc_google_analytics->save();
                         }
                         $this->redirect('@edit_strategy?id_tree=' . $id_tree . '&node_id=' . $indicator->getId() . '&response=success&from=g');
                     } else {
                         //buscar los nodos del mismo arbol
                         $c = new Criteria();
                         $c->add(IndicadoresScGoogleAnalyticsPeer::GOOGLE_USER_EMAIL, $json_userinfo->{'email'});
                         //$c->add(IndicatorsScPeer::TREE_ID, $indicator->getTreeId());//puede ser del mismo arbol u otro
                         $c->add(IndicatorsScPeer::FLAG, 'habilitado');
                         $c->addJoin(IndicadoresScGoogleAnalyticsPeer::INDICADOR_ID, IndicatorsScPeer::ID);
                         $object = IndicadoresScGoogleAnalyticsPeer::doSelectOne($c);
                         if (is_object($object)) {
                             $indicadores_sc_google_analytics = new IndicadoresScGoogleAnalytics();
                             $indicadores_sc_google_analytics->setRefreshToken($object->getRefreshToken());
                             $indicadores_sc_google_analytics->setGoogleUserEmail($json_userinfo->{'email'});
                             $indicadores_sc_google_analytics->setIndicadorId($indicator->getId());
                             $indicadores_sc_google_analytics->save();
                         }
                         $this->redirect('@edit_strategy?id_tree=' . $id_tree . '&node_id=' . $indicator->getId() . '&response=success&from=g');
                     }
                 }
             }
         }
     }
 }
 public function getTipoConector($nodo_id)
 {
     $indicador = IndicatorsScPeer::retrieveByPK($nodo_id);
     if ($indicador->getDetNetworkAttributeId() != null) {
         $resp = $indicador->getDetNetworkAttribute()->getNetwork()->getName();
     } else {
         $resp = "Manual";
     }
     return $resp;
 }
 public function return_name_indicators_by_id($id)
 {
     $indicators = IndicatorsScPeer::retrieveByPK($id);
     if ($indicators > 0) {
         return $indicators->getName();
     } else {
         return "Desconocido";
     }
 }
 private function getIndicatorScData($indicator_sc_id)
 {
     $nodo = IndicatorsScPeer::retrieveByPk($indicator_sc_id);
     $det_net_attr_id = $nodo->getDetNetworkAttributeId();
     $network_id = $nodo->getDetNetworkAttribute()->getNetworkId();
     $usernameInNetwork = $nodo->getUsernameInNetwork();
     $atributo = DetNetworkAttributePeer::retrieveByPK($det_net_attr_id);
     $keyword = $atributo->getAttribute()->getKeyWord();
     $resp = 0;
     if ($network_id == '1') {
         /* Facebook */
         $json_string = @file_get_contents("http://graph.facebook.com/" . $usernameInNetwork . "/");
         if ($json_string === FALSE) {
             $resp = 0;
         } else {
             $json = json_decode($json_string);
             if (isset($json->{$keyword})) {
                 if ($json->{$keyword} != '') {
                     $resp = $json->{$keyword};
                 } else {
                     $resp = 0;
                 }
             } else {
                 $resp = 0;
             }
         }
     } elseif ($network_id == '2') {
         /* Twitter */
         $xml_string = @file_get_contents("http://api.twitter.com/1/users/show.xml?screen_name=" . $usernameInNetwork);
         if ($xml_string === FALSE) {
             $resp = 0;
         } else {
             $xml = simplexml_load_string($xml_string);
             if (isset($xml->{$keyword})) {
                 if ($xml->{$keyword} != '') {
                     $resp = $xml->{$keyword};
                 } else {
                     $resp = 0;
                 }
             } else {
                 $resp = 0;
             }
         }
     } elseif ($network_id == '3') {
         /* Google Analytics */
         $access_token = $this->useRefreshToken($nodo->getId());
         if ($access_token != null) {
             $postdata = http_build_query(array('ids' => $usernameInNetwork, 'metrics' => $keyword, 'start-date' => $nodo->getGaFecFin(), 'end-date' => date("Y-m-d"), 'max-results' => '1', 'access_token' => $access_token));
             $xml_string = @file_get_contents("https://www.google.com/analytics/feeds/data" . "?" . $postdata);
             if ($xml_string === FALSE) {
                 $resp = 0;
             } else {
                 $xml = simplexml_load_string($xml_string);
                 if (isset($xml->entry)) {
                     $metrics = $xml->entry->xpath("dxp:metric");
                     if ($metrics[0]['value'] != '') {
                         $resp = $metrics[0]['value'];
                     } else {
                         $resp = 0;
                     }
                 } else {
                     $resp = 0;
                 }
             }
         } else {
             $resp = 0;
         }
     }
     return $resp;
 }