Skip to content

Instantly share code, notes, and snippets.

@markphi2013
Created September 20, 2013 09:04
Show Gist options
  • Save markphi2013/6634983 to your computer and use it in GitHub Desktop.
Save markphi2013/6634983 to your computer and use it in GitHub Desktop.
user access
public function getProgramStats()
{
$user = $this->Auth->user();
if(isset($this->params['url']['program'])){
$programUrls = $this->Program->find('authorized', array(
'specific_program_access' => 'true',
'user_id' => $user['id'],
'conditions' => array('url'=> $this->params['url']['program'])));
foreach($programUrls as $programUrl)
$programDatabase = $programUrl['Program']['database'];
$programStats = $this->Stats->getProgramStats($programDatabase);
$result = array('status' =>'ok', 'programURL' => $programUrl['Program']['url'], 'programStats' => $programStats);
$this->set(compact('result'));
}
}
@markphi2013
Copy link
Author

public function initDB()
{
echo "Acl Start
";
$Group =& $this->User->Group;

    //allow admins to everything
    $group = $Group->find('first', array('conditions' => array('name' => 'administrator')));
    $Group->id = $group['Group']['id'];
    $this->Acl->allow($Group, 'controllers');
    echo "Acl Done: ". $group['Group']['name']."</br>";

    //allow manager to users and programs
    $group = $Group->find('first', array('conditions' => array('name' => 'manager')));
    if ($group == null) {
        echo "Acl ERROR: cannot find the group manager</br>";
    } else {
        $Group->id = $group['Group']['id'];
        $this->Acl->deny($Group, 'controllers');
        $this->Acl->allow($Group, 'controllers/Users');
        $this->Acl->allow($Group, 'controllers/Programs');
        $this->Acl->allow($Group, 'controllers/ProgramsUsers');
        $this->Acl->allow($Group, 'controllers/ProgramHome');
        $this->Acl->allow($Group, 'controllers/ProgramParticipants');
        $this->Acl->allow($Group, 'controllers/ProgramDialogues');
        $this->Acl->allow($Group, 'controllers/ProgramHistory');
        $this->Acl->allow($Group, 'controllers/ProgramSettings');
        $this->Acl->allow($Group, 'controllers/ProgramSimulator');
        $this->Acl->allow($Group, 'controllers/ProgramRequests');
        $this->Acl->allow($Group, 'controllers/ShortCodes');
        $this->Acl->allow($Group, 'controllers/UnmatchableReply');
        $this->Acl->allow($Group, 'controllers/ProgramUnattachedMessages');
        $this->Acl->allow($Group, 'controllers/ProgramPredefinedMessages');
        $this->Acl->allow($Group, 'controllers/ProgramLogs');
        $this->Acl->allow($Group, 'controllers/Templates');
        $this->Acl->allow($Group, 'controllers/Users/view');
        $this->Acl->allow($Group, 'controllers/Users/changePassword');
        $this->Acl->allow($Group, 'controllers/Users/edit');
        echo "Acl Done: ". $group['Group']['name']."</br>";
    }

    //allow program manager to programs
    $group = $Group->find('first', array('conditions' => array('name' => 'program manager')));
    if ($group == null) {
        echo "Acl ERROR: cannot find the group program manager</br>";
    } else {
        $Group->id = $group['Group']['id']."</br";
        $this->Acl->deny($Group, 'controllers');
        $this->Acl->deny($Group, 'controllers/Programs');
        $this->Acl->allow($Group, 'controllers/Programs/index');
        $this->Acl->allow($Group, 'controllers/Programs/getProgramStats');
        //$this->Acl->allow($Group, 'controllers/Users/login');
        //$this->Acl->allow($Group, 'controllers/Users/logout');
        $this->Acl->allow($Group, 'controllers/ProgramHome');
        $this->Acl->allow($Group, 'controllers/ProgramParticipants');
        $this->Acl->allow($Group, 'controllers/ProgramDialogues');
        $this->Acl->allow($Group, 'controllers/ProgramHistory');
        $this->Acl->allow($Group, 'controllers/ProgramSettings');
        $this->Acl->allow($Group, 'controllers/ProgramSettings/view');
        $this->Acl->allow($Group, 'controllers/ProgramSettings/edit');
        //$this->Acl->allow($Group, 'controllers/ProgramSettings/index');
        //$this->Acl->allow($Group, 'controllers/ProgramSettings/view');
        $this->Acl->allow($Group, 'controllers/ProgramSimulator');        
        $this->Acl->allow($Group, 'controllers/ProgramRequests');
        $this->Acl->allow($Group, 'controllers/ShortCodes');
        $this->Acl->deny($Group, 'controllers/UnmatchableReply');
        $this->Acl->allow($Group, 'controllers/ProgramUnattachedMessages');
        $this->Acl->allow($Group, 'controllers/ProgramPredefinedMessages');
        $this->Acl->allow($Group, 'controllers/ProgramLogs');
        $this->Acl->allow($Group, 'controllers/Users/view');
        $this->Acl->allow($Group, 'controllers/Users/changePassword');
        $this->Acl->allow($Group, 'controllers/Users/edit');
        echo "Acl Done: ". $group['Group']['name']."</br>";
    }

    //allow partner to 
    $group = $Group->find('first', array('conditions' => array('name' => 'partner')));
            if ($group == null) {
        echo "Acl ERROR: cannot find the partner</br>";
    } else {
        $Group->id = $group['Group']['id']."</br";
        $this->Acl->deny($Group, 'controllers');
        $this->Acl->allow($Group, 'controllers/Programs/index');
        $this->Acl->allow($Group, 'controllers/Programs/view');
        $this->Acl->allow($Group, 'controllers/Programs/getProgramStats');
        //$this->Acl->allow($Group, 'controllers/Users/login');
        //$this->Acl->allow($Group, 'controllers/Users/logout');
        $this->Acl->allow($Group, 'controllers/ProgramHome');
        //$this->Acl->deny($Group, 'controllers/ProgramParticipants');
        $this->Acl->deny($Group, 'controllers/ProgramParticipants/edit');
        $this->Acl->deny($Group, 'controllers/ProgramParticipants/add');
        $this->Acl->allow($Group, 'controllers/ProgramParticipants/index');
        $this->Acl->allow($Group, 'controllers/ProgramParticipants/view');
        $this->Acl->allow($Group, 'controllers/ProgramParticipants/export');
        $this->Acl->allow($Group, 'controllers/ProgramParticipants/download');
        $this->Acl->allow($Group, 'controllers/ProgramParticipants/getFilterParameterOptions');
        $this->Acl->deny($Group, 'controllers/ProgramParticipants/reset');
        $this->Acl->deny($Group, 'controllers/ProgramParticipants/optin');
        $this->Acl->deny($Group, 'controllers/ProgramParticipants/optout');
        $this->Acl->allow($Group, 'controllers/ProgramHistory/index');
        $this->Acl->allow($Group, 'controllers/ProgramHistory/export');
        $this->Acl->allow($Group, 'controllers/ProgramHistory/download');
        $this->Acl->deny($Group, 'controllers/ProgramHistory/delete');
        $this->Acl->allow($Group, 'controllers/Users/view');
        $this->Acl->allow($Group, 'controllers/Users/changePassword');
        $this->Acl->allow($Group, 'controllers/Users/edit');
        echo "Acl Done: ". $group['Group']['name']."</br>";
    }

    //allow partner messager to
    $group = $Group->find('first', array('conditions' => array('name' => 'partner messenger')));
    if ($group == null) {
        echo "Acl ERROR: cannot find the group partner messenger</br>";
    } else {

        $Group->id = $group['Group']['id'];
        $this->Acl->deny($Group, 'controllers');
        $this->Acl->allow($Group, 'controllers/Programs/index');
        $this->Acl->allow($Group, 'controllers/Programs/view');
        $this->Acl->allow($Group, 'controllers/Programs/getProgramStats');
        $this->Acl->allow($Group, 'controllers/ProgramHome');
        $this->Acl->allow($Group, 'controllers/ProgramParticipants');
        $this->Acl->allow($Group, 'controllers/ProgramHistory/index');
        $this->Acl->allow($Group, 'controllers/ProgramHistory/export');
        $this->Acl->allow($Group, 'controllers/ProgramHistory/download');
        $this->Acl->deny($Group, 'controllers/ProgramHistory/delete');
        $this->Acl->allow($Group, 'controllers/ProgramUnattachedMessages');
        $this->Acl->allow($Group, 'controllers/ProgramPredefinedMessages');
        $this->Acl->allow($Group, 'controllers/Users/view');
        $this->Acl->allow($Group, 'controllers/Users/changePassword');
        $this->Acl->allow($Group, 'controllers/Users/edit');
        echo "Acl Done: ". $group['Group']['name']."</br>";
    }

    echo 'AllDone';
    exit;
}

@markphi2013
Copy link
Author

function loadProgramStats(){
var programs = window.app.programs;
if(programs != null){
var program = {};
for(var i = 0; i< programs.length; i++){
program = programs[i];
var programUrl = program['Program']['url'];
$.ajax({
type: "GET",
dataType: "json",
url: "/programs/getProgramStats.json?program="+programUrl,
success: function(data){
$("#"+data['programURL']+" .ttc-program-stats").empty().append(generateHtmlProgramStats(data['programStats']))
},
timeout: 100,
error: function(data){
alert(this.programUrl);
//$("#"+data['programURL']+" .ttc-program-stats").empty().append('

LOPJJJJJ
')
}
});
}
}
}

@overnin
Copy link

overnin commented Sep 20, 2013

$.ajax({
     type: "GET",
     dataType: "json",
     url: "/programs/getProgramStats.json",
     data: {"program": programUrl},                  #cleaner to have the parameter of the url separate from the url
     success: function(data){
            $("#"+data['programURL']+" .ttc-program-stats").empty().append(generateHtmlProgramStats(data['programStats']))
     },
     timeout: 100,
     error: function(ajaxRequest){
            alert(ajaxRequest.data['program']);
     })

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment