Beispiel #1
0
 public static function assignees()
 {
     $session_logic = Session_Logic::getInstance();
     $database_users = Database_Users::getInstance();
     $database_bibles = Database_Bibles::getInstance();
     $myuser = $session_logic->currentUser();
     $mylevel = $session_logic->currentLevel();
     // Bibles the user has write access to.
     $mybibles = array();
     $bibles = $database_bibles->getBibles();
     foreach ($bibles as $bible) {
         if (Access_Bible::write($bible, $myuser)) {
             $mybibles[] = $bible;
         }
     }
     // This holds the assignees.
     $assignees = array();
     // Process all users.
     $users = $database_users->getUsers();
     sort($users);
     foreach ($users as $user) {
         // Assignees should have a level less than or equal to $mylevel.
         $level = $database_users->getUserLevel($user);
         if ($level <= $mylevel) {
             // Assignees should have access to $mybibles or no access to any Bible.
             // The admin has all users assigned.
             $userBibles = $database_users->getBibles4User($user);
             $biblesInCommon = array_intersect($userBibles, $mybibles);
             if (!empty($biblesInCommon) || empty($userBibles) || $mylevel >= Filter_Roles::ADMIN_LEVEL) {
                 $assignees[] = $user;
             }
         }
     }
     return $assignees;
 }
Beispiel #2
0
                $book = $books[0];
            } else {
                $book = 0;
            }
            $ipc_focus->set($book, 1, 1);
        }
    }
}
$view = new Assets_View(__FILE__);
// Active Bible, and check access.
$bible = Access_Bible::clamp($database_config_user->getBible());
$view->view->bible = $bible;
// Store the active Bible in the page's javascript.
$view->view->navigationCode = Navigation_Passage::code($bible);
// Write access?
$write_access = Access_Bible::write($bible);
$view->view->write_access = $write_access;
$chapterLoaded = Locale_Translate::_("Loaded");
$chapterSaving = Locale_Translate::_("Saving...");
$chapterRetrying = Locale_Translate::_("Retrying...");
$write_access = $write_access ? "true" : "false";
$script = <<<EOD
var editorChapterLoaded = '{$chapterLoaded}';
var editorChapterSaving = '{$chapterSaving}';
var editorChapterRetrying = '{$chapterRetrying}';
var editorWriteAccess = {$write_access};
EOD;
$view->view->script = $script;
$class = Filter_CustomCSS::getClass($bible);
$font = $database_config_bible->getTextFont($bible);
$direction = $database_config_bible->getTextDirection($bible);
Beispiel #3
0
        if (in_array($destination, $bibles)) {
            $error_message = Locale_Translate::_("Cannot copy Bible because the destination Bible already exists.");
        } else {
            ignore_user_abort(true);
            set_time_limit(0);
            // User needs read access to the original.
            if (Access_Bible::read($origin)) {
                $database_bibles->createBible($destination);
                $books = $database_bibles->getBooks($origin);
                foreach ($books as $book) {
                    $chapters = $database_bibles->getChapters($origin, $book);
                    foreach ($chapters as $chapter) {
                        $data = $database_bibles->getChapter($origin, $book, $chapter);
                        Bible_Logic::storeChapter($destination, $book, $chapter, $data);
                    }
                }
                $success_message = Locale_Translate::_("The Bible was copied.");
                // Check / grant access to destination Bible.
                if (!Access_Bible::write($destination)) {
                    $database_users->grantAccess2Bible($session_logic->currentUser(), $destination);
                }
            }
        }
    }
}
@($view->view->success_message = $success_message);
@($view->view->error_message = $error_message);
$bibles = Access_Bible::bibles();
$view->view->bibles = $bibles;
$view->render("manage.php");
Assets_Page::footer();
Beispiel #4
0
            if (Access_Bible::write($bible)) {
                $dialog_list->add_row($bible, "&target={$bible}");
            }
        }
        $dialog_list->run();
    } else {
        $database_config_user->setTargetXrefBible($target);
    }
}
$source = $database_config_user->getSourceXrefBible();
if (!Access_Bible::read($source)) {
    $source = "";
    $database_config_user->setSourceXrefBible($source);
}
$target = $database_config_user->getTargetXrefBible();
if (!Access_Bible::write($target)) {
    $target = "";
    $database_config_user->setTargetXrefBible($target);
}
if ($source == "") {
    $source = "--";
}
if ($target == "") {
    $target = "--";
}
$view->view->source = $source;
$view->view->target = $target;
$view->view->success = $success;
$view->view->error = $error;
$view->render("index.php");
Assets_Page::footer();
Beispiel #5
0
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
require_once "../bootstrap/bootstrap.php";
page_access_level(Filter_Roles::MANAGER_LEVEL);
$database_usfmresources = Database_UsfmResources::getInstance();
@($delete = $_GET['delete']);
if (isset($delete)) {
    if (Access_Bible::write($delete)) {
        $database_usfmresources->deleteResource($delete);
    } else {
        Assets_Page::error(Locale_Translate::_("You do not have write access to this resource"));
    }
}
@($convert = $_GET['convert']);
if (isset($convert)) {
    if (Access_Bible::write($convert)) {
        Tasks_Logic::queue(Tasks_Logic::PHP, array(__DIR__ . "/convert2bible.php", $convert));
        Filter_Url::redirect("../journal/index.php");
        die;
    } else {
        Assets_Page::error(Locale_Translate::_("Insufficient privileges"));
    }
}
$header = new Assets_Header(Locale_Translate::_("USFM Resources"));
$header->jQueryUIOn("dialog");
$header->run();
$view = new Assets_View(__FILE__);
$resources = $database_usfmresources->getResources();
$view->view->resources = $resources;
$view->render("manage.php");
Assets_Page::footer();
Beispiel #6
0
    $database_logs->log("Non existing user {$username}", Filter_Roles::MANAGER_LEVEL);
}
$pass_ok = $password == $database_users->getmd5($username);
if (!$pass_ok) {
    $database_logs->log("Incorrect password {$password} for user {$username}", Filter_Roles::MANAGER_LEVEL);
}
if (!$user_ok || !$pass_ok) {
    // Unauthorized.
    http_response_code(401);
    die;
}
$session_logic->setUsername($username);
$bookname = $database_books->getEnglishFromId($book);
$database_logs->log("Client sent Bible data: {$bible} {$bookname} {$chapter}", Filter_Roles::MANAGER_LEVEL);
// Check whether the user has write-access to the Bible.
if (!Access_Bible::write($bible, $username)) {
    $message = "User {$username} does not have write access to Bible {$bible}";
    $database_logs->log($message, Filter_Roles::MANAGER_LEVEL);
    echo $message;
    die;
}
// Check checksum.
if ($checksum != Checksum_Logic::get($oldusfm . $newusfm)) {
    $message = "The received data is corrupted";
    $database_logs->log($message, Filter_Roles::MANAGER_LEVEL);
    echo $message;
    die;
}
$serverusfm = $database_bibles->getChapter($bible, $book, $chapter);
// Gather data for recording the changes made by the user, for the change notifications.
$old_id = $database_bibles->getChapterId($bible, $book, $chapter);
Beispiel #7
0
    }
}
// Identifier for this $bible.
$bibleID = $database_bibles->getID($bible);
// Create an email with the checking results for this $bible.
$emailBody = array();
$hits = $database_check->getHits();
foreach ($hits as $hit) {
    if ($hit['bible'] == $bibleID) {
        $passage = Filter_Books::passagesDisplayInline(array(array($hit['book'], $hit['chapter'], $hit['verse'])));
        $data = Filter_Html::sanitize($hit['data']);
        $result = "<p>{$passage} {$data}</p>";
        $emailBody[] = $result;
    }
}
// Send email to users with write access to the Bible and a subscription to the notification.
if (count($emailBody) > 0) {
    $subject = Locale_Translate::_("Bible Checks") . " " . $bible;
    $emailBody = implode("\n", $emailBody);
    $users = $database_users->getUsers();
    foreach ($users as $user) {
        if ($database_config_user->getUserBibleChecksNotification($user)) {
            if (Access_Bible::write($bible, $user)) {
                if (!Filter_Client::enabled()) {
                    $database_mail->send($user, $subject, $emailBody);
                }
            }
        }
    }
}
$database_logs->log("Check {$bible}: Complete", Filter_Roles::TRANSLATOR_LEVEL);
Beispiel #8
0
if (isset($mail)) {
    Sprint_Logic::burndown($bible, true);
    $view->view->success = Locale_Translate::_("The information was mailed to the subscribers");
    // Give the burndown logic time to update the sprint history,
    // so the page will display the updated burndown chart.
    sleep(2);
}
$header->run();
@($bible = $_GET['bible']);
if (isset($bible)) {
    if ($bible == "") {
        $dialog_list = new Dialog_List2(Locale_Translate::_("Select which Bible to display the Sprint for"));
        $bibles = Access_Bible::bibles();
        foreach ($bibles as $bible) {
            // Select from Bibles the user has write access to.
            if (Access_Bible::write($bible)) {
                $dialog_list->add_row($bible, "&bible={$bible}");
            }
        }
        $dialog_list->run();
    } else {
        $database_config_user->setBible($bible);
    }
}
$bible = Access_Bible::clamp($database_config_user->getBible());
@($id = $_GET['id']);
@($moveback = $_GET['moveback']);
if (isset($moveback)) {
    $time = mktime(0, 0, 0, $month - 1, 1, $year);
    $database_sprint->updateMonthYear($id, date("n", $time), date("Y", $time));
    $view->view->success = Locale_Translate::_("The task was moved to the previous sprint");