Skip to content

Commit

Permalink
Update mail method, add phpcrypt library into plugin - refs BT#9092
Browse files Browse the repository at this point in the history
  • Loading branch information
Daniel Barreto committed Feb 10, 2015
1 parent 7825df0 commit 01bea28
Show file tree
Hide file tree
Showing 60 changed files with 12,897 additions and 451 deletions.
97 changes: 0 additions & 97 deletions main/webservices/registration.soap.php
Expand Up @@ -5551,103 +5551,6 @@ function WSUserSubscribedInCourse ($params)
return (CourseManager::is_user_subscribed_in_course($userId,$courseCode));
}

/** WSSessionListInCategory */

// Output params for WSSessionListInCategory
$server->wsdl->addComplexType(
'sessionBrief',
'complexType',
'struct',
'all',
'',
array(
'name' => array('name' => 'name', 'type' => 'xsd:string'), //Course string code
'description' => array('name' => 'description', 'type' => 'xsd:string'), //Chamilo user_id
'date_start' => array('name' => 'start_date', 'type' => 'xsd:string'),
'date_end' => array('name' => 'end_date', 'type' => 'xsd:string'),
)
);

$server->wsdl->addComplexType(
'sessionBriefList',
'complexType',
'array',
'',
'SOAP-ENC:Array',
array(),
array(
array('ref'=>'SOAP-ENC:arrayType',
'wsdl:arrayType'=>'tns:sessionBrief[]')
),
'tns:sessionBrief'
);

// Input params for editing users
$server->wsdl->addComplexType(
'sessionCategoryInput',
'complexType',
'struct',
'all',
'',
array(
'id' => array('name' => 'id', 'type' => 'xsd:string'), //Course string code
'name' => array('name' => 'name', 'type' => 'xsd:string'), //Chamilo user_id
'secret_key' => array('name' => 'secret_key', 'type' => 'xsd:string')
)
);

// Register the method to expose
$server->register('WSSessionListInCategory', // method name
array('sessionCategoryInput' => 'tns:sessionCategoryInput'), // input parameters
array('return' => 'tns:sessionBriefList'), // output parameters
'urn:WSRegistration', // namespace
'urn:WSRegistration#WSSessionListInCategory', // soapaction
'rpc', // style
'encoded', // use
'This service checks if user assigned to course' // documentation
);


/**
* @param $params
* @return null|soap_fault
*/
function WSSessionListInCategory($params) {
global $debug;

if ($debug) error_log('WSUserSubscribedInCourse');
if ($debug) error_log('Params '. print_r($params, 1));
if (!WSHelperVerifyKey($params)) {

return return_error(WS_ERROR_SECRET_KEY);
}
// Check if category ID is set
if (!empty($params['id']) && empty($params['category_name'])) {
$sessionCategoryId = $params['id'];
} elseif (!empty($params['category_name'])) {
// Check if category name is set
$sessionCategoryId = SessionManager::getSessionCategoryIdByName($params['category_name']);
if (is_array($sessionCategoryId)) {
$sessionCategoryId = current($sessionCategoryId);
}
} else {
// Return soap fault Not valid input params

return return_error(WS_ERROR_INVALID_INPUT);
}

// Get the session brief List by category

$sessionList = SessionManager::getSessionBriefListByCategory($sessionCategoryId);

if (empty($sessionList)) {

return return_error(WS_ERROR_NOT_FOUND_RESULT);
}

return $sessionList;
}

// Add more webservices by Hooks
if (!empty($hook)) {
$hook->setEventData(array('server' => $server));
Expand Down
97 changes: 97 additions & 0 deletions plugin/advancedsubscription/ajax/advsub.ajax.php
@@ -0,0 +1,97 @@
<?php
/**
* Created by PhpStorm.
* User: dbarreto
* Date: 22/12/14
* Time: 01:51 PM
*/

require_once '../config.php';

$plugin = AdvancedSubscriptionPlugin::create();
$data = isset($_REQUEST['data']) ?
strlen($_REQUEST['data']) > 16 ?
$plugin->decrypt(Security::remove_XSS($_REQUEST['data'])) :
null :
null;
// Get data
if (isset($data) && is_array($data)) {
// Action code
$a = isset($data['a']) ? $data['a'] : null;
// User ID
$u = isset($data['u']) ? $data['u'] : null;
// Session ID
$s = isset($data['s']) ? $data['s'] : null;
// More data
$params['is_connected'] = isset($data['is_connected']) ? $data['is_connected'] : false;
$params['profile_completed'] = isset($data['profile_completed']) ? $data['profile_completed'] : 0;
$params['accept'] = isset($data['accept']) ? $data['accept'] : false;
} else {
// Action code
$a = isset($_REQUEST['a']) ? Security::remove_XSS($_REQUEST['a']) : null;
// User ID
$u = isset($_REQUEST['u']) ? Security::remove_XSS($_REQUEST['u']) : null;
// Session ID
$s = isset($_REQUEST['s']) ? Security::remove_XSS($_REQUEST['s']) : null;
// More data
$params['is_connected'] = isset($_REQUEST['is_connected']) ? $_REQUEST['is_connected'] : false;
$params['profile_completed'] = isset($_REQUEST['profile_completed']) ? $_REQUEST['profile_completed'] : 0;
$params['accept'] = isset($_REQUEST['accept']) ? $_REQUEST['accept'] : false;
}
// Init result array
$result = array('error' => true, 'errorMessage' => 'There was an error');
if (!empty($a) && !empty($u)) {
switch($a) {
case 'first': // Check minimum requirements
try {
$res = AdvancedSubscriptionPlugin::create()->isAbleToRequest($u, $params);
if ($res) {
$result['error'] = false;
$result['errorMessage'] = 'No error';
$result['pass'] = true;
} else {
$result['errorMessage'] = 'User can not be subscribed';
$result['pass'] = false;
}
} catch (\Exception $e) {
$result['errorMessage'] = $e->getMessage();
}
break;
case 'second': // Subscription
$res = AdvancedSubscriptionPlugin::create()->startSubscription($u, $s, $params);
if ($res === true) {
$result['error'] = false;
$result['errorMessage'] = 'No error';
$result['pass'] = true;
} else {
if (is_string($res)) {
$result['errorMessage'] = $res;
} else {
$result['errorMessage'] = 'User can not be subscribed';
}
$result['pass'] = false;
}
break;
case 'third': // Encrypt
$plugin = AdvancedSubscriptionPlugin::create();
$res = $plugin->encrypt($data);
if (!empty($res) && strlen($res) > 16) {
$result['error'] = false;
$result['errorMessage'] = 'No error';
$result['pass'] = true;
} else {
if (is_string($res)) {
$result['errorMessage'] = $res;
} else {
$result['errorMessage'] = 'User can not be subscribed';
}
$result['pass'] = false;
}
break;
default:
$result['errorMessage'] = 'Action do not exist!';
break;
}
}

echo json_encode($result);
19 changes: 18 additions & 1 deletion plugin/advancedsubscription/config.php
Expand Up @@ -10,6 +10,23 @@
define('TABLE_ADV_SUB_MAIL', 'plugin_advsub_mail');
define('TABLE_ADV_SUB_MAIL_TYPE', 'plugin_advsub_mail_type');
define('TABLE_ADV_SUB_MAIL_STATUS', 'plugin_advsub_mail_status');

define('ADV_SUB_ACTION_STUDENT_REQUEST', 0);
define('ADV_SUB_ACTION_SUPERIOR_APPROVE', 1);
define('ADV_SUB_ACTION_SUPERIOR_DISAPPROVE', 2);
define('ADV_SUB_ACTION_SUPERIOR_SELECT', 3);
define('ADV_SUB_ACTION_ADMIN_APPROVE', 4);
define('ADV_SUB_ACTION_ADMIN_DISAPPROVE', 5);


define('ADV_SUB_QUEUE_STATUS_START', 0);
define('ADV_SUB_QUEUE_STATUS_BOSS_DISAPPROVED', 1);
define('ADV_SUB_QUEUE_STATUS_BOSS_APPROVED', 2);
define('ADV_SUB_QUEUE_STATUS_ADMIN_DISAPPROVED', 3);
define('ADV_SUB_QUEUE_STATUS_ADMIN_APPROVED', 10);

require_once __DIR__ . '/../../main/inc/global.inc.php';
require_once __DIR__ . '/resources/phpcrypt/phpCrypt.php';
require_once api_get_path(LIBRARY_PATH) . 'plugin.class.php';
require_once api_get_path(PLUGIN_PATH) . 'advancedsubscription/src/advanced_subscription_plugin.class.php';
require_once api_get_path(PLUGIN_PATH) . 'advancedsubscription/src/AdvancedSubscriptionPlugin.class.php';
require_once api_get_path(PLUGIN_PATH) . 'advancedsubscription/src/HookAdvancedSubscription.class.php';
65 changes: 65 additions & 0 deletions plugin/advancedsubscription/cron/notify_by_mail.php
@@ -0,0 +1,65 @@
<?php
/**
* This script fixes a bloody issue with passwords getting out of sync between
* course-subscriber and chamilo
* @package chamilo
* @author Daniel Barreto <daniel.barreto@beeznest.com>
*/

/**
* Init
*/
require_once '../../../main/inc/global.inc.php';

/**
* Get database handle
*/

$nowUtc = api_get_utc_datetime();
$weekAgoUtc = api_get_utc_datetime(strtotime('-1 week'));
$sTable = Database::get_main_table(TABLE_MAIN_SESSION);
$uUserTable = Database::get_main_table(TABLE_MAIN_SESSION_USER);
$limitArea = 'limit_area';
//define('USER_RELATION_TYPE_BOSS', 8);
//define('TABLE_ADV_SUB_QUEUE', 'plugin_advsub_queue');
//define('TABLE_ADV_SUB_MAIL', 'plugin_advsub_mail');

$sessionAdvSub = array();
$sessionQueue = array();
$userAdmins = array();

$advSubQueueTable = TABLE_ADVSUB_QUEUE;
$advSubMailTable = TABLE_ADVSUB_MAIL;
$advSubMails = Database::select('id, created_at, user_id, status', $advSubMailTable);
$advSubQueue = Database::select('id, status_id, user_id, updated_at', $advSubQueueTable, array('where' => array('start_date > ?' => $nowUtc)));
$sessionIds = Database::select('id', $sTable, array('where' => array('start_date > ?' => $nowUtc)));
$users = Database::select('user_id ASS boss_id, friend_user_id AS id', $uUserTable, array('where' => array('relation_type = ?' => USER_RELATION_TYPE_BOSS)));
$sField = new ExtraField('session');
$sFieldValue = new ExtraFieldValue('session');
$areaCounts = array();
foreach ($users as $userId => $bossId) {
$areaCounts[$bossId] ++;
}
foreach ($advSubMails as $id => $advSubMail) {
$userSubMail[$advSubMail['user_id']][] = $id;
}
foreach ($sessionIds as $sessionId) {
$bossId = $advSubQueue[$sessionQueue[$sessionId]]['user_id'];
$sLimitArea = $sFieldValue->get_values_by_handler_and_field_variable($sessionId, $limitArea);
if ($sLimitArea > $sQueueCount[$bossId]) {
// Register data
$chooseUser = true;
}
if ($advSubMail[end($userSubMail[$bossId])]['created_at'] < $weekAgoUtc) {
// Send mail again
// Session x Boss -> user, status, buttons
if ($chooseUser) {
// Use choose user tpl
}
}
foreach ($userAdmins as $adminId => $userAdmin) {
if ($advSubMail[end($userSubMail[$adminId])]['created_at'] < $weekAgoUtc) {
// send queue status 2
}
}
}
3 changes: 3 additions & 0 deletions plugin/advancedsubscription/resources/phpcrypt/.gitignore
@@ -0,0 +1,3 @@
/.project
/.directory
test/

0 comments on commit 01bea28

Please sign in to comment.