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; }