/**
  * Deletes the post with the supllied postid
  * @return json $returnObject object containing status and message
  */
 public function deletePost()
 {
     $inputJson = Input::all();
     $post = Post::find($inputJson['postid']);
     $returnObject = new stdClass();
     $returnObject->status = 'ok';
     $returnObject->mission_completed = 'false';
     $usertask = UserTask::where('user_id', $post->user_id)->where('task_id', $post->task_id)->where('group_id', $post->group_id)->get();
     if (isset($usertask[0])) {
         $userTaskRecord = UserTask::find($usertask[0]->id);
         $userTaskRecord->delete();
         $returnObject->mission_completed = 'true';
     }
     // remove likes associated with the post
     $affectedLikes = Like::where('post_id', $inputJson['postid'])->delete();
     // remove notifications associated with the post
     $affectedNotifications = Notification::where('type', 'newlike')->orWhere('type', 'newcomment')->where('source_id', $inputJson['postid'])->delete();
     $post->delete();
     $returnObject->message = "Post deleted successfully";
     return Response::json($returnObject);
 }
Beispiel #2
0
if (Yii::app()->user->getFlash('taskSaved')) {
    ?>
                                <h4 class='alert alert-success centered hide-on-click'>
                                        <?php 
    echo Yii::t("UserAdminModule.admin", "Saved");
    ?>
                                </h4>
                        <?php 
}
?>

                        <?php 
$taskForm = $this->beginWidget('CActiveForm');
?>
                        
                                <?php 
echo $taskForm->checkBoxList($model, 'taskIds', CHtml::listData(UserTask::model()->findAll("code != 'freeAccess'"), 'code', 'name'), array('template' => "<label class='checkbox'>{input} {label}</label>", 'separator' => ''));
?>
                        
                                <br>
                                <?php 
echo CHtml::htmlButton('<i class="icon-ok icon-white"></i> ' . Yii::t("UserAdminModule.admin", "Save"), array('class' => 'btn btn-info', 'type' => 'submit'));
?>
                        
                        <?php 
$this->endWidget();
?>
                </td>
        </tr>
</table>
    public function getLeaderBoardData()
    {
        $input = Input::all();
        $userTaskObj = new UserTask();
        // DEFINE JSON STRING
        // create new LeaderBoard Object
        $leaderBoardObj = new stdClass();
        //		$input['keycodes'] = '{"teams": [
        //		  {"keycode": "dev001"},
        //		  {"keycode": "mim001"}
        //		]}';
        // decode json string
        $teamArray = $input['keycodes'];
        $teamArray = $teamArray['teams'];
        $returnArray = array();
        $teamCounter = 0;
        foreach ($teamArray as $key => $value) {
            # code...
            $group = DB::table('groups')->where('keycode', $value['keycode'])->get();
            $totalPlayers = DB::table('users')->where('keycode', $value['keycode'])->count();
            // check the group existence
            if (count($group) > 0) {
                // run the logic code to get the number of days passed
                $groupDetails = $group[0];
                $timeStartDate = new DateTime(date("Y-m-d", $groupDetails->timestart));
                $dayPassed = daysDiff($timeStartDate, new DateTime('now')) + 1;
                $returnArray[$teamCounter]['teamid'] = $groupDetails->id;
                $returnArray[$teamCounter]['teamname'] = $groupDetails->name;
                $returnArray[$teamCounter]['teamPIC'] = SITE_URL . base64_decode($groupDetails->thumbnail);
                $returnArray[$teamCounter]['daypassed'] = $dayPassed;
                $returnArray[$teamCounter]['totalPlayers'] = $totalPlayers;
                /*
                // DEFINE VARIABLE
                //
                */
                $totalNumTeamMissions = 0;
                $totalNumCompletedMissions = 0;
                $totalNumLikes = 0;
                $totalNumComments = 0;
                $totalNumPosts = 0;
                $day = array();
                // loop thru days
                for ($i = 1; $i <= $dayPassed; $i++) {
                    # code...
                    $date = $timeStartDate->format('Y-m-d');
                    $returnArray[$teamCounter]['day'][$i]['date'] = $date;
                    // get the number of completed mission on that day
                    $completedTasks = DB::table('user_tasks')->where('group_id', $groupDetails->id)->where('complete', 1)->where('created_at', 'LIKE', $date . '%')->get();
                    $totalNumCompletedMissions = $totalNumCompletedMissions + count($completedTasks);
                    $day[$i]['completedTasks'] = count($completedTasks);
                    // get the total posts based on groupID
                    $totalPosts = DB::table('posts')->where('group_id', $groupDetails->id)->where('created_at', 'LIKE', $date . '%')->count();
                    $totalNumPosts = $totalPosts + $totalNumPosts;
                    $day[$i]['totalPosts'] = $totalPosts;
                    // get the total likes , comments each day JOIN 2 tables into one SQL statement
                    $totalLikesArray = DB::select('select l.id 
					FROM likes as l, posts as p 
					WHERE p.group_id = ? AND l.post_id = p.id AND l.created_at LIKE ?
					', array($groupDetails->id, $date . '%'));
                    $totalLikes = count($totalLikesArray);
                    $totalNumLikes = $totalLikes + $totalNumLikes;
                    $day[$i]['totalLikes'] = $totalLikes;
                    // get total comment
                    $totalCommentsArray = DB::select('select l.id 
					FROM comments as l, posts as p 
					WHERE p.group_id = ? AND l.post_id = p.id AND l.created_at LIKE ?
					', array($groupDetails->id, $date . '%'));
                    $totalComments = count($totalCommentsArray);
                    $totalNumComments = $totalComments + $totalNumComments;
                    $day[$i]['totalComments'] = $totalComments;
                    $timeStartDate->modify('+1 day');
                }
                $returnArray[$teamCounter]['totalNumTeamMissions'] = $userTaskObj->totalTasks($groupDetails->id);
                $returnArray[$teamCounter]['totalNumCompletedMissions'] = $totalNumCompletedMissions;
                $returnArray[$teamCounter]['totalNumLikes'] = $totalNumLikes;
                $returnArray[$teamCounter]['totalNumComments'] = $totalNumComments;
                $returnArray[$teamCounter]['totalNumPosts'] = $totalNumPosts;
                $returnArray[$teamCounter]['totalPoints'] = $totalNumComments + $totalNumLikes + $totalNumPosts + $totalNumCompletedMissions * 6;
                $returnArray[$teamCounter]['score'] = round($returnArray[$teamCounter]['totalPoints'] / $returnArray[$teamCounter]['totalPlayers'] / $returnArray[$teamCounter]['daypassed'], 1);
                $dayCollection = array($day);
                $returnArray[$teamCounter]['day'] = $dayCollection[0];
            }
            $teamCounter++;
        }
        function compare($a, $b)
        {
            $result = null;
            if ($a['score'] == $b['score']) {
                if ($a['totalPoints'] = $b['totalPoints']) {
                    $result = 0;
                } else {
                    $result = $a['totalPoints'] > $b['totalPoints'] ? -1 : 1;
                }
            } else {
                $result = $a['score'] > $b['score'] ? -1 : 1;
            }
            return $result;
        }
        usort($returnArray, "compare");
        $leaderBoardObj->teams = $returnArray;
        // return json data
        return $_GET['callback'] . '(' . json_encode($leaderBoardObj) . ')';
        //		return json_encode($leaderBoardObj);
    }
Beispiel #4
0
    if (!isset($prevControllerName) or $prevControllerName != $controllerName) {
        $prevControllerName = $controllerName;
        echo "<div class='controllerNameContainer'>" . " <span class='moduleControllerName' param='{$moduleName}-{$controllerName}'><i class='icon-plus'> </i>{$controllerName}</span></div>";
    }
    ?>

                                        <label class='checkbox hide module<?php 
    echo $moduleName;
    ?>
 moduleController<?php 
    echo $moduleName . '-' . $controllerName;
    ?>
'>
                                                <?php 
    echo CHtml::checkBox('Operation[' . $moduleControler->id . ']', in_array($moduleControler->id, $operationIds), array('value' => $moduleControler->id, 'class' => 'moduleControllerCheckBox' . $moduleName . $controllerName));
    ?>
                                                <?php 
    echo UserTask::pretifyRoute($moduleControler->route);
    ?>
                                        </label>
                                <?php 
}
?>
                        </div>
                        </td>
                </tr>
        </table>

        <?php 
echo CHtml::htmlButton('<i class="icon-ok icon-white"></i> ' . Yii::t("UserAdminModule.admin", "Save"), array('class' => 'btn btn-info btn-block', 'type' => 'submit'));
echo CHtml::endForm();
 /**
  * Suspend user after 
  * @return number of user affected
  */
 public function accountSuspentionNotificationCron()
 {
     $userObj = new stdClass();
     // read user data from the database
     $users = DB::table('users')->where('suspend_after', 1)->get(array('id', 'created_at'));
     if (sizeof($users) < 1) {
         print_r('no users found<br/>');
     }
     // loop thru all the users with email_notification enable
     foreach ($users as $user) {
         // init role assignment to check wether the user is admin or normal user
         $role_assignments = DB::table('role_assignments')->where('user_id', $user->id)->where('role_id', 1)->get();
         // get the current group id
         $groupid = DB::table('group_users')->where('user_id', $user->id)->pluck('group_id');
         if (count($role_assignments) > 0) {
             continue;
         }
         $userObj->id = $user->id;
         $userObj->created_at = $user->created_at;
         // get total tasks
         $userTaskObj = new UserTask();
         $totaltasks = $userTaskObj->totalTasks($groupid);
         // calculating suspended date 86400 = 1 day ; 432000 = 5 days
         $totalDaysBeforeSuspention = $totaltasks + 5;
         $userCreatedTime = new DateTime($user->created_at);
         $actualDays = $userCreatedTime->modify('+ ' . $totalDaysBeforeSuspention . ' days');
         $currentDate = new DateTime();
         $interval = daysDiff($actualDays, $currentDate);
         if ($interval == 0) {
             $user = User::find($user->id);
             $user->suspended = 1;
             $user->save();
         }
     }
     return "OK - Task Done";
 }
 public function actionAjaxGetStatus()
 {
     $task_idstr = Yii::app()->request->getParam('tasks');
     $user_id = MenuLoader::getUserId();
     $ids = explode(',', $task_idstr);
     foreach ($ids as $k => &$v) {
         $v = '"' . trim($v) . '"';
     }
     $idstr = implode(',', $ids);
     $my_tasks = array();
     $tasks_proccess = array();
     if ($idstr) {
         //Yii::log('task ids:'.$idstr, 'info');
         $criteria = new CDbCriteria();
         $criteria->condition = 'task_id IN (' . $idstr . ') AND user_id=:user_id';
         $criteria->params = array(':user_id' => $user_id);
         $my_tasks = UserTask::model()->findAll($criteria);
         $base_url = TSInterface::get('G3');
         foreach ($my_tasks as &$task) {
             //Yii::log('task id:'.$task->id.'  status:'.$task->status, 'info');
             if ($task->status != 0 && $task->status != 1) {
                 continue;
             }
             $tasks_proccess[$task->id] = array('total' => 0, 'failed' => 0, 'running' => 0, 'finished' => 0);
             $url = $base_url . '?taskId=' . $task->task_id;
             $content = NetHelper::curl_file_get_contents($url);
             Yii::log('TASK_' . $task->task_id . ' URL:' . $url . ' return:' . $content, 'info');
             $data = json_decode($content, true);
             if ($data && $data['success']) {
                 $all_status = 'finished';
                 if (empty($data['data'])) {
                     $all_status = 'running';
                 }
                 foreach ($data['data'] as $item) {
                     $tasks_proccess[$task->id]['total']++;
                     if ($item['status'] == 'failed') {
                         $all_status = 'failed';
                         $tasks_proccess[$task->id]['failed']++;
                         break;
                     }
                     if ($item['status'] == 'running') {
                         $all_status = 'running';
                         $tasks_proccess[$task->id]['running']++;
                         break;
                     }
                     if ($item['status'] == 'finished') {
                         $tasks_proccess[$task->id]['finished']++;
                         //break;
                     }
                 }
                 if ($all_status == 'running') {
                     $task->status = 1;
                 }
                 if ($all_status == 'failed') {
                     $task->status = -1;
                 }
                 if ($all_status == 'finished') {
                     $task->status = 2;
                 }
                 $task->save();
                 $updateArr = array('status' => $task->status);
                 if ($task->status == 2 || $task->status == -1) {
                     $updateArr['task_result'] = $content;
                     $updateArr['finish_time'] = time();
                 }
                 Yii::log('UPDATE TASK_' . $task->id . ' update_info:' . json_encode($updateArr), 'info');
                 Task::model()->updateAll($updateArr, 'task_id=:task_id', array(':task_id' => $task->task_id));
             }
         }
     }
     $retArr = array();
     foreach ($my_tasks as $item) {
         //Yii::log('export task id:'.$item->id.'  status:'.$item->status, 'info');
         $retArr[$item->id] = $item->status;
     }
     echo json_encode($retArr);
 }