BlackBoard PHP Class [Manipular Información]
Bueno hoy hice esta pequeña clase en PHP para ingresar a BlackBoard.
¿ Que puedes Hacer con esta clase ?
– Puedes Conectarte a Blackboard.
– Ver tus ramos.
– Ver cuantos mensajes en Inbox/Enviados
– Muestra los mensajes en Bandeja de entrada
Requerimientos:
– PHP5
– Libreria curl habilitada
¿ Que puedes hacer con esta libreria ?
Se podria crear un archivo php y crear un cron en tu hosting cada X minutos y comprobar si tienes mensajes nuevos, asi estar al día con los mensajes que envian los profesores, etc.
Aca dejo la clase:
<?PHP require_once 'class/ProtocolHTTP.class.php'; /* @Autor: Esteban Fuentealba @Email: mi [dot] warezx [at] gmail [dot] com @Web: https://estebanfuentealba.wordpress.com/ */ class BlackBoard { var $data = null; var $method = null; var $urls = null; function __construct($data) { $this->data = $data; $this->method = new ProtocolHTTP(); } function Login() { $params = "action=login&remote-user=&new_loc=&auth_type=&one_time_token=&encoded_pw=".base64_encode($this->data['password'])."&encoded_pw_unicode=".base64_encode($this->data['password'])."&user_id=".$this->data['user']."&password=&Login.x=81&Login.y=8"; $g = $this->method->methodGET($this->data['urls']['login'],null,null); $r = $this->method->methodPOST($this->data['urls']['login'], $g['cookies'], null, $params ); $this->data['cookies'] = $r['cookies']; } function GetSubjects() { if(!$this->data['cookies']) $this->Login(); $httpRequest = $this->method->methodGET($this->data['urls']['index'],$this->data['cookies'],null); $elements = $this->CreateDOM($httpRequest['response'],"//a[contains(@href,'frameset.jsp?tab_id=')]"); $subjects=null; foreach ($elements as $element) { preg_match_all('#\%26id\%3d(.+)\%26url\%3d#',$element->attributes->item(0)->value,$r); $nodes = $element->childNodes; foreach ($nodes as $node) { $subjects[$r[1][0]] = $node->nodeValue; } } return $subjects; } function GetInboxMsgs($idSubject) { if(!$this->data['cookies']) $this->Login(); $httpRequest = $this->method->methodGET($this->CreateUrl($this->data['urls']['inbox'],array('id' => $idSubject)),$this->data['cookies'],null); $elements = $this->CreateDOM($httpRequest['response'],"//span[contains(@class,'listItem')]"); $msgs=null; $tmp=null; $d = array('user','title','date'); $x=0; $i=0; foreach ($elements as $element) { $val = trim($element->nodeValue); if($val != "") { $in = $d[$x++]; $tmp[$i][$in] = $val; if($x == 3) { $x = 0; $i++; } } } return $tmp; } function GetInboxStats($idSubject) { if(!$this->data['cookies']) $this->Login(); $httpRequest = $this->method->methodGET($this->CreateUrl($this->data['urls']['inboxStats'],array('id' => $idSubject)),$this->data['cookies'],null); $elements = $this->CreateDOM($httpRequest['response'],"//span[contains(@class,'listItem')]"); $stats=null; $d = array('BandejaEntradaNoLeido','BandejaEntradaTotal','EnviadoNoLeido','EnviadoTotal'); $i=0; foreach ($elements as $element) { $value = trim($element->nodeValue); if (is_numeric($value)) { $stats[$d[$i++]] = $value; } } return $stats; } function CreateDOM($html,$xp) { $webDoc = new DOMDocument(); @$webDoc->loadHTML($html); $xpath = new DOMXpath($webDoc); $elements = $xpath->query($xp); return $elements; } function CreateUrl($text,$replaceParams) { preg_match_all('#\{(.[^\}]+)\}#',$text,$r); $urlCreated = ''; foreach($r[1] as $param) { $urlCreated = str_replace('{'.$param.'}',(is_numeric($replaceParams[$param])) ? ((int)$replaceParams[$param]) : $replaceParams[$param],$text); } return $urlCreated; } } ?>
USO:
<?PHP /* @Autor: Esteban Fuentealba @Email: mi [dot] warezx [at] gmail [dot] com @Web: https://estebanfuentealba.wordpress.com/ */ //## Incluyo la clase require_once 'class/BlackBoard.class.php'; //## Crea una instancia a la clase BlackBoard $b = new BlackBoard( //## Como parametro se le pasa un array array( //## El usuario de BlackBoard 'user' => 'es.fuentealba', //## La clave del usuario Blackboard 'password' => 'miclave', //## Urls del portal de Blackboard 'urls' => array( 'login' => 'http://campusvirtual.duoc.cl/webapps/login/', 'index' => 'http://campusvirtual.duoc.cl/webapps/portal/tab/_1_1/index.jsp', 'inboxStats' => 'http://campusvirtual.duoc.cl/webapps/blackboard/messaging/course/folderList.jsp?course_id={id}', 'inbox' => 'http://campusvirtual.duoc.cl/webapps/blackboard/messaging/course/messageList.jsp?nav=messages&course_id={id}&folder=inbox' ) ) ); //## Obtengo todos los ramos que tengo foreach($b->GetSubjects() as $subjectID => $subjectName) { echo $subjectID .' => '.$subjectName."<br />"; } //## Obtengo las estadisticas de mensajes nuevos,totales,enviados //## Le paso como parametro un subjectID o id de ramo print_r($b->GetInboxStats('_45891_1')); //## Obtengo los mensajes de entrada de un ramo especifico //## Le paso como parametro un subjectID o id de ramo print_r($b->GetInboxMsgs('_45891_1')); ?>
Codigo Fuente: BlackBoard.EstebanFuentealba.rar
Espero que les sirva esta clase, pueden editarla o agregarle nuevas funcionalidades,
Saludos!
Categorías: PHP
API BlackBoard, BlackBoard, DUOCUC, PHP, ProtocolHTTP
Muy buen artículo….
( Cuando las clases de PHP :P )
Saludos!