Example #1
0
 /**
  * Returns the search form
  * @return string
  */
 public static function getSearchForm()
 {
     $url = api_get_path(WEB_CODE_PATH) . 'group/group_overview.php?' . api_get_cidreq();
     $form = new FormValidator('search_groups', 'get', $url, null, array('class' => 'form-search'));
     $form->addElement('text', 'keyword');
     $form->addElement('button', 'submit', get_lang('Search'));
     return $form->toHtml();
 }
Example #2
0
 /**
  * Builds the form that enables the user to
  * select a directory to browse/upload in
  *
  * @param array 	An array containing the folders we want to be able to select
  * @param string	The current folder (path inside of the "document" directory, including the prefix "/")
  * @param string	Group directory, if empty, prevents documents to be uploaded (because group documents cannot be uploaded in root)
  * @param	boolean	Whether to change the renderer (this will add a template <span> to the QuickForm object displaying the form)
  * @todo this funcionality is really bad : jmontoya
  * @return string html form
  */
 public static function build_directory_selector($folders, $document_id, $group_dir = '', $change_renderer = false)
 {
     $doc_table = Database::get_course_table(TABLE_DOCUMENT);
     $course_id = api_get_course_int_id();
     $folder_titles = array();
     if (is_array($folders)) {
         $escaped_folders = array();
         foreach ($folders as $key => &$val) {
             $escaped_folders[$key] = Database::escape_string($val);
         }
         $folder_sql = implode("','", $escaped_folders);
         $sql = "SELECT * FROM {$doc_table}\n                WHERE filetype = 'folder' AND c_id = {$course_id} AND path IN ('" . $folder_sql . "')";
         $res = Database::query($sql);
         $folder_titles = array();
         while ($obj = Database::fetch_object($res)) {
             $folder_titles[$obj->path] = $obj->title;
         }
     }
     $form = new FormValidator('selector', 'GET', api_get_self() . '?' . api_get_cidreq());
     $form->addElement('hidden', 'cidReq', api_get_course_id());
     $parent_select = $form->addSelect('id', get_lang('CurrentDirectory'), '', array('onchange' => 'javascript: document.selector.submit();'));
     if ($change_renderer) {
         $renderer = $form->defaultRenderer();
         $renderer->setElementTemplate('<span>{label} : {element}</span> ', 'curdirpath');
     }
     // Group documents cannot be uploaded in the root
     if (empty($group_dir)) {
         $parent_select->addOption(get_lang('Documents'), '/');
         if (is_array($folders)) {
             foreach ($folders as $folder_id => &$folder) {
                 $selected = $document_id == $folder_id ? ' selected="selected"' : '';
                 $path_parts = explode('/', $folder);
                 $folder_titles[$folder] = cut($folder_titles[$folder], 80);
                 $counter = count($path_parts) - 2;
                 if ($counter > 0) {
                     $label = str_repeat('&nbsp;&nbsp;&nbsp;', $counter) . ' &mdash; ' . $folder_titles[$folder];
                 } else {
                     $label = ' &mdash; ' . $folder_titles[$folder];
                 }
                 $parent_select->addOption($label, $folder_id);
                 if ($selected != '') {
                     $parent_select->setSelected($folder_id);
                 }
             }
         }
     } else {
         if (!empty($folders)) {
             foreach ($folders as $folder_id => &$folder) {
                 $selected = $document_id == $folder_id ? ' selected="selected"' : '';
                 $label = $folder_titles[$folder];
                 if ($folder == $group_dir) {
                     $label = get_lang('Documents');
                 } else {
                     $path_parts = explode('/', str_replace($group_dir, '', $folder));
                     $label = cut($label, 80);
                     $label = str_repeat('&nbsp;&nbsp;&nbsp;', count($path_parts) - 2) . ' &mdash; ' . $label;
                 }
                 $parent_select->addOption($label, $folder_id);
                 if ($selected != '') {
                     $parent_select->setSelected($folder_id);
                 }
             }
         }
     }
     $html = $form->toHtml();
     return $html;
 }
 /**
  * Returns the search form
  * @return string
  */
 public static function getSearchForm()
 {
     $url = api_get_path(WEB_CODE_PATH) . 'group/group_overview.php?' . api_get_cidreq();
     $form = new FormValidator('search_groups', 'get', $url, null, array('class' => 'form-search'), FormValidator::LAYOUT_INLINE);
     $form->addHidden('cidReq', api_get_course_id());
     $form->addHidden('id_session', api_get_session_id());
     $form->addElement('text', 'keyword');
     $form->addButtonSearch();
     return $form->toHtml();
 }
Example #4
0
 /**
  * Displays a basic form on the overview page for changing the item title and the item description.
  * @param string $item_type
  * @param string $title
  * @param array $data
  * @return string
  */
 public function display_item_small_form($item_type, $title = '', $data = array())
 {
     $url = api_get_self() . '?' . api_get_cidreq() . '&action=edit_item&lp_id=' . $this->lp_id;
     $form = new FormValidator('small_form', 'post', $url);
     $form->addElement('header', $title);
     $form->addElement('text', 'title', get_lang('Title'));
     $form->addElement('button', 'submit_button', get_lang('Save'));
     $form->addElement('hidden', 'id', $data['id']);
     $form->addElement('hidden', 'parent', $data['parent_item_id']);
     $form->addElement('hidden', 'previous', $data['previous_item_id']);
     $form->setDefaults(array('title' => $data['title']));
     return $form->toHtml();
 }
Example #5
0
if ($form->validate()) {
    $em = Database::getManager();
    $values = $form->exportValues();
    $password = $values['pass1'];
    $token = $values['token'];
    /** @var \Chamilo\UserBundle\Entity\User $user */
    $user = UserManager::getManager()->findUserByConfirmationToken($token);
    if ($user) {
        if (!$user->isPasswordRequestNonExpired($ttl)) {
            Display::addFlash(Display::return_message(get_lang('LinkExpired')), 'warning');
            header('Location: ' . api_get_path(WEB_CODE_PATH) . 'auth/lostPassword.php');
            exit;
        }
        $user->setPlainPassword($password);
        $userManager = UserManager::getManager();
        $userManager->updateUser($user, true);
        $user->setConfirmationToken(null);
        $user->setPasswordRequestedAt(null);
        Database::getManager()->persist($user);
        Database::getManager()->flush();
        Display::addFlash(Display::return_message(get_lang('Updated')));
        header('Location: ' . api_get_path(WEB_PATH));
        exit;
    } else {
        Display::addFlash(Display::return_message(get_lang('LinkExpired')));
    }
}
$tpl->assign('form', $form->toHtml());
$content = $tpl->get_template('auth/set_temp_password.tpl');
$tpl->assign('content', $tpl->fetch($content));
$tpl->display_one_col_template();
if (!empty($selectedGroupChoices)) {
    $defaults['groups'] = $selectedGroupChoices;
}
$form->setDefaults($defaults);
$tpl = new Template();
$currentUser = $em->getRepository('ChamiloUserBundle:User')->find(api_get_user_id());
if ($form->validate()) {
    $values = $form->getSubmitValues();
    // Subscribing users
    $users = isset($values['users']) ? $values['users'] : [];
    $userForm = isset($values['user_form']) ? $values['user_form'] : [];
    if (!empty($userForm)) {
        $em->getRepository('ChamiloCourseBundle:CItemProperty')->subscribeUsersToItem($currentUser, 'learnpath', $course, $session, $lpId, $users);
        Display::addFlash(Display::return_message(get_lang('Updated')));
    }
    // Subscribing groups
    $groups = isset($values['groups']) ? $values['groups'] : [];
    $groupForm = isset($values['group_form']) ? $values['group_form'] : [];
    if (!empty($groupForm)) {
        $em->getRepository('ChamiloCourseBundle:CItemProperty')->subscribeGroupsToItem($currentUser, 'learnpath', $course, $session, $lpId, $groups);
        Display::addFlash(Display::return_message(get_lang('Updated')));
    }
    header("Location: {$url}");
    exit;
} else {
    $headers = [get_lang('SubscribeUsersToLp'), get_lang('SubscribeGroupsToLp')];
    $tabs = Display::tabs($headers, [$formUsers->toHtml(), $form->toHtml()]);
    $tpl->assign('tabs', $tabs);
}
$layout = $tpl->get_template('learnpath/subscribe_users.tpl');
$tpl->display($layout);
 /**
  * Index
  *
  * @param   \Silex\Application $app
  * @param   int $lpId
  *
  * @todo move calls in repositories
  *
  * @return Symfony\Component\HttpFoundation\RedirectResponse|\Symfony\Component\HttpFoundation\Response
  */
 public function indexAction(Request $request)
 {
     ///$lpId
     $courseId = api_get_course_int_id();
     //@todo use the before filter to aborts this course calls
     if (empty($courseId)) {
         $app->abort(403, 'Course not available');
     }
     $courseCode = api_get_course_id();
     $lp = new \learnpath($courseCode, $lpId, api_get_user_id());
     $url = $app['url_generator']->generate('subscribe_users', array('lpId' => $lpId));
     //Setting breadcrumb @todo move this in the template lib
     $breadcrumb = array(array('url' => api_get_path(WEB_CODE_PATH) . 'newscorm/lp_controller.php?action=list', 'name' => get_lang('LearningPaths')), array('url' => api_get_path(WEB_CODE_PATH) . "newscorm/lp_controller.php?action=build&lp_id=" . $lp->get_id(), 'name' => $lp->get_name()), array('url' => '#', 'name' => get_lang('SubscribeUsers')));
     $app['breadcrumb'] = $breadcrumb;
     // Find session.
     $sessionId = api_get_session_id();
     $session = null;
     if (!empty($sessionId)) {
         $session = $app['orm.em']->getRepository('Chamilo\\CoreBundle\\Entity\\Session')->find($sessionId);
     }
     // Find course.
     $course = $app['orm.em']->getRepository('Chamilo\\CoreBundle\\Entity\\Course')->find($courseId);
     // Getting subscribe users to the course.
     $subscribedUsers = $app['orm.em']->getRepository('Chamilo\\CoreBundle\\Entity\\Course')->getSubscribedStudents($course);
     $subscribedUsers = $subscribedUsers->getQuery();
     $subscribedUsers = $subscribedUsers->execute();
     // Getting all users in a nice format.
     $choices = array();
     foreach ($subscribedUsers as $user) {
         $choices[$user->getUserId()] = $user->getCompleteNameWithClasses();
     }
     // Getting subscribed users to a LP.
     $subscribedUsersInLp = $app['orm.em']->getRepository('Chamilo\\CoreBundle\\Entity\\CItemProperty')->getUsersSubscribedToItem('learnpath', $lpId, $course, $session);
     $selectedChoices = array();
     foreach ($subscribedUsersInLp as $itemProperty) {
         $selectedChoices[] = $itemProperty->getToUserId();
     }
     //Building the form for Users
     $formUsers = new \FormValidator('lp_edit', 'post', $url);
     $formUsers->addElement('hidden', 'user_form', 1);
     $formUsers->addElement('header', get_lang('SubscribeUsersToLp'));
     $userMultiSelect = $formUsers->addElement('advmultiselect', 'users', get_lang('Users'), $choices);
     $userMultiSelect->setButtonAttributes('add');
     $userMultiSelect->setButtonAttributes('remove');
     $formUsers->addElement('style_submit_button', 'submit', get_lang('Save'), 'class="save"');
     $defaults = array();
     if (!empty($selectedChoices)) {
         $defaults['users'] = $selectedChoices;
     }
     $formUsers->setDefaults($defaults);
     //Building the form for Groups
     $form = new \FormValidator('lp_edit', 'post', $url);
     $form->addElement('header', get_lang('SubscribeGroupsToLp'));
     $form->addElement('hidden', 'group_form', 1);
     //Group list
     $groupList = \CourseManager::get_group_list_of_course(api_get_course_id(), api_get_session_id(), 1);
     $groupChoices = array();
     if (!empty($groupList)) {
         foreach ($groupList as $group) {
             $groupChoices[$group['id']] = $group['name'];
         }
     }
     //Subscribed groups to a LP
     $subscribedGroupsInLp = $app['orm.em']->getRepository('Chamilo\\CoreBundle\\Entity\\CItemProperty')->getGroupsSubscribedToItem('learnpath', $lpId, $course, $session);
     $selectedGroupChoices = array();
     foreach ($subscribedGroupsInLp as $itemProperty) {
         $selectedGroupChoices[] = $itemProperty->getToGroupId();
     }
     $groupMultiSelect = $form->addElement('advmultiselect', 'groups', get_lang('Groups'), $groupChoices);
     $groupMultiSelect->setButtonAttributes('add');
     $groupMultiSelect->setButtonAttributes('remove');
     // submit button
     $form->addElement('style_submit_button', 'submit', get_lang('Save'), 'class="save"');
     /*$form = $app['form.factory']->createBuilder('form')
            ->add('origin', 'choice', array(
               'label' => get_lang('Origin'),
               'multiple' => true,
               'required' => false,
               'expanded' => false,
               //'class' => 'Entity\Course',
               //'property' => 'complete_name',
               //'query_builder' => function(Chamilo\CoreBundle\Entity\Repository\CourseRepository $repo) use ($course) {
                   $repo =  $repo->getSubscribedStudents($course);
                   return $repo;
               },
               'choices' => $choices
           ))
           ->add('destination', 'choice', array(
               'label' => get_lang('Destination'),
               'multiple' => true,
               'expanded' => false,
               'required' => false,
               //'class' => 'Entity\Course',
               //'property' => 'complete_name',
               //'query_builder' => function(Chamilo\CoreBundle\Entity\Repository\CourseRepository $repo) use ($course) {
                 //  return $repo->getSubscribedStudents($course);
               //},
               'choices' => $selectedChoices
           ))
           ->getForm();
       */
     $defaults = array();
     if (!empty($selectedGroupChoices)) {
         $defaults['groups'] = $selectedGroupChoices;
     }
     $form->setDefaults($defaults);
     if ($request->getMethod() == 'POST') {
         //Subscribing users
         $users = $request->get('users');
         $userForm = $request->get('user_form');
         if (!empty($userForm)) {
             $app['orm.em']->getRepository('Chamilo\\CoreBundle\\Entity\\CItemProperty')->subscribeUsersToItem('learnpath', $course, $session, $lpId, $users);
         }
         //Subscribing groups
         $groups = $request->get('groups');
         $groupForm = $request->get('group_form');
         if (!empty($groupForm)) {
             $app['orm.em']->getRepository('Chamilo\\CoreBundle\\Entity\\CItemProperty')->subscribeGroupsToItem('learnpath', $course, $session, $lpId, $groups);
         }
         return $app->redirect($url);
     } else {
         $app['template']->assign('formUsers', $formUsers->toHtml());
         $app['template']->assign('formGroups', $form->toHtml());
     }
     $response = $app['template']->render_template('learnpath/subscribe_users.tpl');
     return new Response($response, 200, array());
 }
    $users = isset($values['users']) ? $values['users'] : [];
    if (!empty($users)) {
        $deleteUsers = [];
        if ($subscribedUsersInCategory) {
            /** @var CLpCategoryUser $user */
            foreach ($subscribedUsersInCategory as $user) {
                $userId = $user->getUser()->getId();
                if (!in_array($userId, $users)) {
                    $category->removeUsers($user);
                }
            }
        }
        foreach ($users as $userId) {
            $categoryUser = new CLpCategoryUser();
            $user = UserManager::getRepository()->find($userId);
            $categoryUser->setUser($user);
            $category->addUser($categoryUser);
        }
        $em->merge($category);
        $em->flush();
        Display::addFlash(Display::return_message(get_lang('Updated')));
    }
    header("Location: {$url}");
    exit;
} else {
    $headers = [get_lang('SubscribeUsersToLp'), get_lang('SubscribeGroupsToLp')];
    $tabs = $formUsers->toHtml();
    $tpl->assign('tabs', $tabs);
}
$layout = $tpl->get_template('learnpath/subscribe_users.tpl');
$tpl->display($layout);