コード例 #1
0
 public function run($userId, $mode = 'test')
 {
     $testMode = $mode != 'run';
     $message = "Ensure DB Indexes\n";
     $numberOfIndexesCreated = 0;
     $website = Website::get();
     $onDevMachine = strpos($website->domain, 'dev.') !== false;
     $onLocalMachine = strrpos($website->domain, '.local') !== false;
     $message .= "\n-------------  Main Database:\n";
     $mainCollectionName = ProjectModelMongoMapper::instance()->getCollectionName();
     $mainIndexes = ProjectModelMongoMapper::instance()->INDEXES_REQUIRED;
     $mainIndexesToCreate = MongoStore::getIndexesNotSetInCollection(SF_DATABASE, $mainCollectionName, $mainIndexes);
     $numberOfIndexesCreated += count($mainIndexesToCreate);
     $message .= count($mainIndexesToCreate) . " main indexes created.\n";
     if (($onDevMachine || $onLocalMachine) && MongoStore::hasDB(SF_TEST_DATABASE)) {
         $message .= "\n-------------  Test Database:\n";
         $mainIndexesToCreate = MongoStore::getIndexesNotSetInCollection(SF_TEST_DATABASE, $mainCollectionName, $mainIndexes);
         $numberOfIndexesCreated += count($mainIndexesToCreate);
         $message .= count($mainIndexesToCreate) . " test indexes created.\n";
     }
     if (!$testMode) {
         MongoStore::ensureIndexesInCollection(SF_DATABASE, $mainCollectionName, $mainIndexes);
         if (($onDevMachine || $onLocalMachine) && MongoStore::hasDB(SF_TEST_DATABASE)) {
             MongoStore::ensureIndexesInCollection(SF_TEST_DATABASE, $mainCollectionName, $mainIndexes);
         }
     }
     // loop over every project
     $projectList = new ProjectListModel();
     $projectList->read();
     foreach ($projectList->entries as $projectParams) {
         $project = ProjectModel::getById($projectParams['id']);
         if ($project->appName == 'lexicon') {
             $message .= "\n-------------  {$project->projectName} project:\n";
             $lexiconCollectionName = LexEntryModel::mapper($project->databaseName())->getCollectionName();
             $lexiconIndexes = LexEntryModel::mapper($project->databaseName())->INDEXES_REQUIRED;
             $lexiconIndexesToCreate = MongoStore::getIndexesNotSetInCollection($project->databaseName(), $lexiconCollectionName, $lexiconIndexes);
             $numberOfIndexesCreated += count($lexiconIndexesToCreate);
             $optionListCollectionName = LexOptionListModel::mapper($project->databaseName())->getCollectionName();
             $optionListIndexes = LexOptionListModel::mapper($project->databaseName())->INDEXES_REQUIRED;
             $optionListIndexesToCreate = MongoStore::getIndexesNotSetInCollection($project->databaseName(), $optionListCollectionName, $optionListIndexes);
             $numberOfIndexesCreated += count($optionListIndexesToCreate);
             if (count($lexiconIndexesToCreate) + count($optionListIndexesToCreate) > 0) {
                 $message .= count($lexiconIndexesToCreate) . " lexicon indexes created.\n";
                 $message .= count($optionListIndexesToCreate) . " option list indexes created.\n";
             } else {
                 $message .= "No indexes needed creating.\n";
             }
             if (!$testMode) {
                 MongoStore::ensureIndexesInCollection($project->databaseName(), $lexiconCollectionName, $lexiconIndexes);
                 MongoStore::ensureIndexesInCollection($project->databaseName(), $optionListCollectionName, $optionListIndexes);
             }
         }
     }
     if ($numberOfIndexesCreated > 0) {
         $message .= "\nCreated {$numberOfIndexesCreated} DB Indexes.\n\n";
     } else {
         $message .= "\nAll indexes were present.\n\n";
     }
     return $message;
 }
 public function run($userId, $mode = 'test')
 {
     $testMode = $mode != 'run';
     $message = "Import Other Language Semantic Domain Projects\n\n";
     $languages = array('es', 'fa', 'hi', 'id', 'km', 'ko', 'ne', 'pt', 'ru', 'te', 'th', 'ur', 'zh-CN');
     //$languages = array('es', 'fa');
     $languageData = new LanguageData();
     $languageData->read();
     foreach ($languages as $lang) {
         $projectCode = SemDomTransProjectModel::projectCode($lang);
         $languageName = $languageData->getLanguage($lang)->name;
         $projectName = SemDomTransProjectModel::projectName($lang, $languageName);
         $existingProject = new SemDomTransProjectModel();
         $existingProject->readByCode($lang);
         if ($existingProject->id->asString() != '') {
             $message .= "{$projectName} already exists!  Removing...\n";
             if (!$testMode) {
                 $existingProject->remove();
             }
         }
         if (!$testMode) {
             $projectId = self::_createEmptyProject($lang, $languageName, $userId);
             $projectModel = ProjectModel::getById($projectId);
             $xmlFilePath = APPPATH . "resources/languageforge/semdomtrans/LocalizedLists-{$lang}.xml";
             $projectModel->importFromFile($xmlFilePath);
         }
         $message .= "Finished importing the {$projectName} \n";
     }
     return $message;
 }
コード例 #3
0
 /**
  * @param string $projectId
  * @param string $userId
  * @returns array - the DTO array
  */
 public static function encode($projectId)
 {
     $projectModel = ProjectModel::getById($projectId);
     $list = $projectModel->listUsers();
     $data = array();
     $data['userCount'] = $list->count;
     $data['users'] = $list->entries;
     $data['project'] = array('roles' => $projectModel->getRolesList(), 'ownerRef' => $projectModel->ownerRef, 'name' => $projectModel->projectName, 'appLink' => "/app/{$projectModel->appName}/{$projectId}/");
     return $data;
 }
コード例 #4
0
 public function testInitializeNewProject_defaultPartOfSpeechOptionListExists()
 {
     $project = self::$environ->createProject(SF_TESTPROJECT, SF_TESTPROJECTCODE);
     $optionLists = new LexOptionListListModel($project);
     $optionLists->read();
     $this->assertCount(0, $optionLists->entries);
     $project = ProjectModel::getById($project->id->asString());
     $project->initializeNewProject();
     $optionLists->read();
     $this->assertTrue(count($optionLists->entries) > 0);
     $this->assertEquals('adj', $optionLists->entries[0]['items'][0]['key']);
 }
コード例 #5
0
 public function testUserCanAccessMethod_projectPageDto_NotAMember_false()
 {
     $userId = self::$environ->createUser('user', 'user', '*****@*****.**', SystemRoles::USER);
     $project = self::$environ->createProject('projectForTest', 'projTestCode');
     $project->appName = 'sfchecks';
     $project->write();
     $projectId = $project->id->asString();
     $project = ProjectModel::getById($projectId);
     $rh = new RightsHelper($userId, $project, self::$environ->website);
     $result = $rh->userCanAccessMethod('project_pageDto', array());
     $this->assertFalse($result);
 }
コード例 #6
0
 public static function encode($projectId)
 {
     $dto = array();
     $project = ProjectModel::getById($projectId);
     $methodPrefix = 'project_management_report_' . $project->appName . '_';
     $reports = array();
     foreach (get_class_methods('\\Api\\Service\\Sf') as $methodName) {
         if (strpos($methodName, $methodPrefix) !== FALSE) {
             $reportId = explode($methodPrefix, $methodName)[1];
             $displayName = ucwords(preg_replace('/([A-Z])/', ' $1', $reportId));
             $reportId = $project->appName . '_' . $reportId;
             array_push($reports, array('id' => $reportId, 'name' => $displayName));
         }
     }
     $dto['reports'] = $reports;
     return $dto;
 }
 public function onAuthenticationSuccess(Request $request, TokenInterface $token)
 {
     $username = $token->getUser()->getUsername();
     $user = new UserModel();
     $website = Website::get();
     // automatically logout if 1) the user doesn't exist or 2) the user is not a system admin and has no site rights on the current site
     if (!$user->readByUserName($username) or $user->role != SystemRoles::SYSTEM_ADMIN and !($user->siteRole->offsetExists($website->domain) and $user->siteRole[$website->domain] != SiteRoles::NONE)) {
         return $this->httpUtils->createRedirectResponse($request, '/app/logout');
     }
     $projectId = $user->getCurrentProjectId($website->domain);
     // redirect to page before the login screen was presented, or to the default project for this user
     $referer = $this->determineTargetUrl($request);
     $url = '/app/projects';
     if ($referer and strpos($referer, '/app/') !== false) {
         $url = $referer;
     } elseif ($projectId && ProjectModel::projectExistsOnWebsite($projectId, $website)) {
         $project = ProjectModel::getById($projectId);
         if ($project->userIsMember($user->id->asString())) {
             $url = '/app/' . $project->appName . '/' . $projectId;
         }
     }
     return $this->httpUtils->createRedirectResponse($request, $url);
 }
コード例 #8
0
 /**
  * @param string $projectId
  * @param string $userId
  * @param Website $website
  * @param string $appName - refers to the application being used by the user
  * @return array
  */
 public static function getSessionData($projectId, $userId, $website, $appName = '')
 {
     $sessionData = array();
     $sessionData['userId'] = (string) $userId;
     $sessionData['baseSite'] = $website->base;
     // Rights
     $user = new UserModel($userId);
     $sessionData['userSiteRights'] = $user->getRightsArray($website);
     $sessionData['username'] = $user->username;
     if ($projectId) {
         $project = ProjectModel::getById($projectId);
         $sessionData['project'] = array();
         $sessionData['project']['id'] = (string) $projectId;
         $sessionData['project']['projectName'] = $project->projectName;
         if ($project->isArchived) {
             $sessionData['project']['projectName'] .= " [ARCHIVED]";
         }
         $sessionData['project']['appName'] = $project->appName;
         $sessionData['project']['appLink'] = "/app/{$project->appName}/{$projectId}/";
         $sessionData['project']['ownerRef'] = $project->ownerRef->asString();
         $sessionData['project']['userIsProjectOwner'] = $project->isOwner($userId);
         $sessionData['project']['slug'] = $project->databaseName();
         $sessionData['project']['isArchived'] = $project->isArchived;
         $sessionData['userProjectRights'] = $project->getRightsArray($userId);
         $sessionData['projectSettings'] = $project->getPublicSettings($userId);
     }
     if ($appName) {
         $sessionData['helps'] = HelpContentCommands::getSessionData($appName, $website);
     }
     // File Size
     $postMax = self::fromValueWithSuffix(ini_get("post_max_size"));
     $uploadMax = self::fromValueWithSuffix(ini_get("upload_max_filesize"));
     $fileSizeMax = min(array($postMax, $uploadMax));
     $sessionData['fileSizeMax'] = $fileSizeMax;
     //return JsonEncoder::encode($sessionData);  // This is handled elsewhere
     return $sessionData;
 }
コード例 #9
0
 public function checkPermissions($methodName, $params)
 {
     if (!self::isAnonymousMethod($methodName)) {
         if (!$this->userId) {
             throw new UserNotAuthenticatedException("Your session has timed out.  Please login again.");
         }
         try {
             $projectModel = ProjectModel::getById($this->projectId);
         } catch (\Exception $e) {
             $projectModel = null;
         }
         $rightsHelper = new RightsHelper($this->userId, $projectModel, $this->website);
         if (!$rightsHelper->userCanAccessMethod($methodName, $params)) {
             throw new UserUnauthorizedException("Insufficient privileges accessing API method '{$methodName}'");
         }
     }
 }
コード例 #10
0
 /**
  * Update the user project role in the project
  * @param string $projectId
  * @param string $userId
  * @param string $projectRole
  * @throws \Exception
  * @return string $userId
  */
 public static function updateUserRole($projectId, $userId, $projectRole = ProjectRoles::CONTRIBUTOR)
 {
     CodeGuard::checkNotFalseAndThrow($projectId, '$projectId');
     CodeGuard::checkNotFalseAndThrow($userId, 'userId');
     //CodeGuard::assertInArrayOrThrow($role, array(ProjectRoles::CONTRIBUTOR, ProjectRoles::MANAGER));
     // Add the user to the project
     $user = new UserModel($userId);
     $project = ProjectModel::getById($projectId);
     if ($project->userIsMember($userId) && $projectRole == $project->users[$userId]->role) {
         return $userId;
     }
     if ($userId == $project->ownerRef->asString()) {
         throw new \Exception("Cannot update role for project owner");
     }
     ProjectCommands::usersDto($projectId);
     if (!$project->userIsMember($userId)) {
         ActivityCommands::addUserToProject($project, $userId);
     }
     $project->addUser($userId, $projectRole);
     $user->addProject($projectId);
     $project->write();
     $user->write();
     return $userId;
 }
コード例 #11
0
 public static function UserEngagementReport($projectId)
 {
     $project = ProjectModel::getById($projectId);
     $output = str_pad('**** User Engagement Report ****', 120, " ", STR_PAD_BOTH) . "\n";
     $output .= str_pad(date(DATE_RFC2822), 120, " ", STR_PAD_BOTH) . "\n\n";
     $data = array();
     $activeUsers = array();
     $managerUsers = array();
     $inactiveUsers = array();
     $invalidUsers = array();
     $listModel = new UserListProjectModel($projectId);
     $listModel->read();
     if ($listModel->count > 0) {
         $textListModel = new TextListModel($project);
         $textListModel->read();
         $questions = array();
         foreach ($textListModel->entries as $text) {
             $questionListModel = new QuestionAnswersListModel($project, $text['id']);
             $questionListModel->read();
             $questions = array_merge($questions, array_map(function ($q) use($text) {
                 $q['textRef'] = $text['id'];
                 return $q;
             }, $questionListModel->entries));
         }
         $answerCtr = 0;
         $commentCtr = 0;
         foreach ($listModel->entries as $user) {
             $userModel = new UserModel($user['id']);
             $user['isActive'] = $userModel->active;
             $user['questions'] = 0;
             $user['texts'] = 0;
             $user['answers'] = 0;
             $user['comments'] = 0;
             $user['responses'] = 0;
             $user['textIds'] = array();
             if (!$user['isActive']) {
                 if (!$user['email']) {
                     $user['email'] = $userModel->emailPending;
                 }
                 array_push($invalidUsers, $user);
                 continue;
             }
             if ($project->users->offsetExists($user['id'])) {
                 $user['role'] = $project->users[$user['id']]->role;
             } else {
                 $user['role'] = ProjectRoles::NONE;
             }
             $answerCtr = 0;
             $commentCtr = 0;
             foreach ($questions as $question) {
                 $responses = 0;
                 foreach ($question['answers'] as $answer) {
                     if (!$answer['content']) {
                         continue;
                     }
                     $answerCtr++;
                     foreach ($answer['comments'] as $comment) {
                         if (!$comment['content']) {
                             continue;
                         }
                         $commentCtr++;
                         if ($comment['userRef'] && strval($comment['userRef']) == $user['id']) {
                             $user['comments']++;
                             $user['responses']++;
                             array_push($user['textIds'], $question['textRef']);
                             $responses++;
                         }
                     }
                     if ($answer['userRef'] && strval($answer['userRef']) == $user['id']) {
                         $user['answers']++;
                         $user['responses']++;
                         array_push($user['textIds'], $question['textRef']);
                         $responses++;
                     }
                 }
                 if ($responses > 0) {
                     $user['questions']++;
                 }
             }
             $user['texts'] = count(array_unique($user['textIds']));
             if ($user['role'] == ProjectRoles::MANAGER) {
                 array_push($managerUsers, $user);
             } elseif ($user['responses'] > 0) {
                 array_push($activeUsers, $user);
             } else {
                 array_push($inactiveUsers, $user);
             }
         }
         $output .= $project->projectName . " Project\n";
         $output .= "Texts (T's) in Project: " . $textListModel->count . "\n";
         $output .= "Questions (Q's) in Project: " . count($questions) . "\n";
         $output .= "Responses (R's) in Project (Answers + Comments): " . ($answerCtr + $commentCtr) . "\n";
         $output .= "Answers (A's) in Project: " . $answerCtr . "\n";
         $output .= "Comments (C's) in Project: " . $commentCtr . "\n";
     } else {
         $output .= "This project has no users\n\n";
     }
     $sortByResponses = function ($a, $b) {
         if ($a['responses'] > $b['responses']) {
             return -1;
         } elseif ($a['responses'] < $b['responses']) {
             return 1;
         } else {
             if ($a['answers'] > $b['answers']) {
                 return -1;
             } elseif ($a['answers'] < $b['answers']) {
                 return 1;
             } else {
                 if ($a['comments'] > $b['comments']) {
                     return -1;
                 } elseif ($a['comments'] < $b['comments']) {
                     return 1;
                 } else {
                     return strcmp($a['username'], $b['username']);
                 }
             }
         }
     };
     $sortByName = function ($a, $b) {
         return strcasecmp($a['name'], $b['name']);
     };
     usort($activeUsers, $sortByResponses);
     usort($managerUsers, $sortByResponses);
     usort($inactiveUsers, $sortByName);
     usort($invalidUsers, $sortByName);
     $output .= "\n\nManagers: " . count($managerUsers) . "\n" . str_pad("Name", 30) . str_pad("Email", 35) . str_pad("Username", 25) . str_pad("R's", 5) . str_pad("A's", 5) . str_pad("C's", 5) . str_pad("Q's", 5) . str_pad("T's", 5) . "\n\n";
     foreach ($managerUsers as $user) {
         $output .= str_pad($user['name'], 30) . str_pad($user['email'], 35) . str_pad($user['username'], 25) . str_pad($user['responses'], 5) . str_pad($user['answers'], 5) . str_pad($user['comments'], 5) . str_pad($user['questions'], 5) . str_pad($user['texts'], 5) . "\n";
     }
     $output .= "\n\nActive Users: " . count($activeUsers) . "\n" . str_pad("Name", 30) . str_pad("Email", 35) . str_pad("Username", 25) . str_pad("R's", 5) . str_pad("A's", 5) . str_pad("C's", 5) . str_pad("Q's", 5) . str_pad("T's", 5) . "\n\n";
     foreach ($activeUsers as $user) {
         $output .= str_pad($user['name'], 30) . str_pad($user['email'], 35) . str_pad($user['username'], 25) . str_pad($user['responses'], 5) . str_pad($user['answers'], 5) . str_pad($user['comments'], 5) . str_pad($user['questions'], 5) . str_pad($user['texts'], 5) . "\n";
     }
     $output .= "\n\nInactive Users (never engaged): " . count($inactiveUsers) . "\n" . str_pad("Name", 30) . str_pad("Email", 35) . str_pad("Username", 25) . "\n\n";
     foreach ($inactiveUsers as $user) {
         $output .= str_pad($user['name'], 30) . str_pad($user['email'], 35) . str_pad($user['username'], 25) . "\n";
     }
     $output .= "\n\nInvited Users (but never validated or logged in): " . count($invalidUsers) . "\n" . str_pad("Name", 30) . str_pad("Email", 35) . str_pad("Username", 25) . "\n\n";
     foreach ($invalidUsers as $user) {
         $output .= str_pad($user['name'], 30) . str_pad($user['email'], 35) . str_pad($user['username'], 25) . "\n";
     }
     $data['output'] = $output;
     $data['result'] = array('managerUsers' => $managerUsers, 'activeUsers' => $activeUsers, 'inactiveUsers' => $inactiveUsers, 'invitedUsers' => $invalidUsers);
     return $data;
 }
<?php

require_once 'e2eTestConfig.php';
use Api\Model\Languageforge\Lexicon\Command\SendReceiveCommands;
use Api\Model\Languageforge\Lexicon\LexProjectModel;
use Api\Model\Shared\ProjectModel;
use Palaso\Utilities\FileUtilities;
$constants = json_decode(file_get_contents(TestPath . 'app/testConstants.json'), true);
// cleanup test assets folder
$project = new ProjectModel();
$project->readByProperties(array('projectCode' => $constants['testProjectCode']));
$testProject = ProjectModel::getById($project->id->asString());
$assetsFolderPath = $testProject->getAssetsFolderPath();
FileUtilities::removeFolderAndAllContents($assetsFolderPath);
// cleanup other assets folders
$otherAssetsFolderPath = str_replace($constants['testProjectCode'], $constants['otherProjectCode'], $assetsFolderPath);
FileUtilities::removeFolderAndAllContents($otherAssetsFolderPath);
$otherAssetsFolderPath = str_replace($constants['testProjectCode'], $constants['thirdProjectCode'], $assetsFolderPath);
FileUtilities::removeFolderAndAllContents($otherAssetsFolderPath);
$otherAssetsFolderPath = str_replace($constants['testProjectCode'], $constants['fourthProjectCode'], $assetsFolderPath);
FileUtilities::removeFolderAndAllContents($otherAssetsFolderPath);
$otherAssetsFolderPath = str_replace($constants['testProjectCode'], $constants['newProjectCode'], $assetsFolderPath);
FileUtilities::removeFolderAndAllContents($otherAssetsFolderPath);
$otherAssetsFolderPath = str_replace($constants['testProjectCode'], $constants['emptyProjectCode'], $assetsFolderPath);
FileUtilities::removeFolderAndAllContents($otherAssetsFolderPath);
$otherAssetsFolderPath = str_replace($constants['testProjectCode'], $constants['srProjectCode'], $assetsFolderPath);
FileUtilities::removeFolderAndAllContents($otherAssetsFolderPath);
$otherAssetsFolderPath = str_replace($constants['testProjectCode'], 'mock-id4', $assetsFolderPath);
if (file_exists($otherAssetsFolderPath)) {
    // glob doesn't list broken links, manually remove them first
    foreach (array_diff(scandir($otherAssetsFolderPath), array('.', '..')) as $filename) {
コード例 #13
0
 public function setupNgView(Application $app, $appName, $projectId = '')
 {
     $siteFolder = NG_BASE_FOLDER . $this->website->base;
     $parentAppFolder = '';
     $appFolder = $this->website->base . '/' . $appName;
     if ($projectId == 'favicon.ico') {
         $projectId = '';
     }
     $possibleSubFolder = "{$siteFolder}/{$appName}/{$projectId}";
     if ($projectId != '' && file_exists($possibleSubFolder) && file_exists("{$possibleSubFolder}/{$appName}-{$projectId}.html") && file_exists("{$possibleSubFolder}/views")) {
         $parentAppFolder = $appFolder;
         $appFolder .= "/{$projectId}";
         $appName .= "-{$projectId}";
         $projectId = '';
     }
     if (!file_exists(NG_BASE_FOLDER . $appFolder)) {
         $appFolder = 'bellows/apps/' . $appName;
         if (!file_exists(NG_BASE_FOLDER . $appFolder)) {
             $app->abort(404, $this->website->base);
             // this terminates PHP
         }
     }
     $this->data['appName'] = $appName;
     $this->data['appFolder'] = $appFolder;
     $this->_userId = SilexSessionHelper::getUserId($app);
     // update the projectId in the session if it is not empty
     if (!$projectId) {
         $projectId = SilexSessionHelper::getProjectId($app, $this->website);
     }
     if ($projectId && ProjectModel::projectExistsOnWebsite($projectId, $this->website)) {
         $projectModel = ProjectModel::getById($projectId);
         if (!$projectModel->userIsMember($this->_userId)) {
             $projectId = '';
         } else {
             $user = new UserModel($this->_userId);
             $user->lastUsedProjectId = $projectId;
             $user->write();
             if ($projectModel->isArchived and $user->role != SystemRoles::SYSTEM_ADMIN) {
                 // Forbidden access to archived projects
                 $projectId = '';
                 $user->lastUsedProjectId = $projectId;
                 $user->write();
                 $app->abort(403, "Forbidden access to archived project");
             }
         }
     } else {
         $projectId = '';
     }
     $app['session']->set('projectId', $projectId);
     $this->_projectId = $projectId;
     // determine help menu button visibility
     // placeholder for UI language 'en' to support translation of helps in the future
     $helpsFolder = NG_BASE_FOLDER . $appFolder . "/helps/en/page";
     if (file_exists($helpsFolder) && iterator_count(new \FilesystemIterator($helpsFolder, \FilesystemIterator::SKIP_DOTS)) > 0) {
         $this->_showHelp = true;
         // there is an implicit dependency on bellows JS here using the jsonRpc module
         $this->addJavascriptFiles(NG_BASE_FOLDER . 'container/js', array('vendor/', 'assets/'));
     }
     // Other session data
     $sessionData = SessionCommands::getSessionData($this->_projectId, $this->_userId, $this->website, $appName);
     $this->data['jsonSession'] = json_encode($sessionData, JSON_UNESCAPED_SLASHES);
     $this->addJavascriptFiles(NG_BASE_FOLDER . 'bellows/js', array('vendor/', 'assets/'));
     $this->addJavascriptFiles(NG_BASE_FOLDER . 'bellows/directive');
     $this->addJavascriptFiles($siteFolder . '/js', array('vendor/', 'assets/'));
     if ($parentAppFolder) {
         $this->addJavascriptFiles(NG_BASE_FOLDER . $parentAppFolder, array('vendor/', 'assets/'));
         $this->addJavascriptNotMinifiedFiles(NG_BASE_FOLDER . $parentAppFolder . '/js/vendor');
         $this->addJavascriptNotMinifiedFiles(NG_BASE_FOLDER . $parentAppFolder . '/js/assets');
     }
     $this->addJavascriptFiles(NG_BASE_FOLDER . $appFolder, array('vendor/', 'assets/'));
     if ($appName == 'semdomtrans' || $appName == 'semdomtrans-new-project') {
         // special case for semdomtrans app
         // add lexicon JS files since the semdomtrans app depends upon these JS files
         $this->addJavascriptFiles($siteFolder . '/lexicon', array('vendor/', 'assets/'));
     }
     $this->addJavascriptNotMinifiedFiles(NG_BASE_FOLDER . 'bellows/js/vendor');
     $this->addJavascriptNotMinifiedFiles(NG_BASE_FOLDER . 'bellows/js/assets');
     $this->addJavascriptNotMinifiedFiles($siteFolder . '/js/vendor');
     $this->addJavascriptNotMinifiedFiles($siteFolder . '/js/assets');
     $this->addJavascriptNotMinifiedFiles(NG_BASE_FOLDER . $appFolder . '/js/vendor');
     $this->addJavascriptNotMinifiedFiles(NG_BASE_FOLDER . $appFolder . '/js/assets');
     $this->addCssFiles(NG_BASE_FOLDER . 'bellows');
     $this->addCssFiles(NG_BASE_FOLDER . $appFolder);
 }
コード例 #14
0
 /**
  * @param string $projectId
  * @param Website $website
  * @return bool
  */
 public static function projectExistsOnWebsite($projectId, $website)
 {
     $projectExists = false;
     $projectModel = new ProjectModel();
     if ($projectModel->exists($projectId)) {
         $projectModel = ProjectModel::getById($projectId);
         $projectExists = $website->domain == $projectModel->siteName;
     }
     return $projectExists;
 }