parent
944ca558ea
commit
c3e8aab460
@ -0,0 +1,764 @@ |
||||
<?php |
||||
|
||||
/* |
||||
* This file is part of the Symfony package. |
||||
* |
||||
* (c) Fabien Potencier <fabien@symfony.com> |
||||
* |
||||
* For the full copyright and license information, please view the LICENSE |
||||
* file that was distributed with this source code. |
||||
*/ |
||||
|
||||
/* |
||||
* Users of PHP 5.2 should be able to run the requirements checks. |
||||
* This is why the file and all classes must be compatible with PHP 5.2+ |
||||
* (e.g. not using namespaces and closures). |
||||
* |
||||
* ************** CAUTION ************** |
||||
* |
||||
* DO NOT EDIT THIS FILE as it will be overridden by Composer as part of |
||||
* the installation/update process. The original file resides in the |
||||
* SensioDistributionBundle. |
||||
* |
||||
* ************** CAUTION ************** |
||||
*/ |
||||
|
||||
/** |
||||
* Represents a single PHP requirement, e.g. an installed extension. |
||||
* It can be a mandatory requirement or an optional recommendation. |
||||
* There is a special subclass, named PhpIniRequirement, to check a php.ini configuration. |
||||
* |
||||
* @author Tobias Schultze <http://tobion.de> |
||||
*/ |
||||
class Requirement |
||||
{ |
||||
private $fulfilled; |
||||
private $testMessage; |
||||
private $helpText; |
||||
private $helpHtml; |
||||
private $optional; |
||||
|
||||
/** |
||||
* Constructor that initializes the requirement. |
||||
* |
||||
* @param bool $fulfilled Whether the requirement is fulfilled |
||||
* @param string $testMessage The message for testing the requirement |
||||
* @param string $helpHtml The help text formatted in HTML for resolving the problem |
||||
* @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags) |
||||
* @param bool $optional Whether this is only an optional recommendation not a mandatory requirement |
||||
*/ |
||||
public function __construct($fulfilled, $testMessage, $helpHtml, $helpText = null, $optional = false) |
||||
{ |
||||
$this->fulfilled = (bool) $fulfilled; |
||||
$this->testMessage = (string) $testMessage; |
||||
$this->helpHtml = (string) $helpHtml; |
||||
$this->helpText = null === $helpText ? strip_tags($this->helpHtml) : (string) $helpText; |
||||
$this->optional = (bool) $optional; |
||||
} |
||||
|
||||
/** |
||||
* Returns whether the requirement is fulfilled. |
||||
* |
||||
* @return bool true if fulfilled, otherwise false |
||||
*/ |
||||
public function isFulfilled() |
||||
{ |
||||
return $this->fulfilled; |
||||
} |
||||
|
||||
/** |
||||
* Returns the message for testing the requirement. |
||||
* |
||||
* @return string The test message |
||||
*/ |
||||
public function getTestMessage() |
||||
{ |
||||
return $this->testMessage; |
||||
} |
||||
|
||||
/** |
||||
* Returns the help text for resolving the problem. |
||||
* |
||||
* @return string The help text |
||||
*/ |
||||
public function getHelpText() |
||||
{ |
||||
return $this->helpText; |
||||
} |
||||
|
||||
/** |
||||
* Returns the help text formatted in HTML. |
||||
* |
||||
* @return string The HTML help |
||||
*/ |
||||
public function getHelpHtml() |
||||
{ |
||||
return $this->helpHtml; |
||||
} |
||||
|
||||
/** |
||||
* Returns whether this is only an optional recommendation and not a mandatory requirement. |
||||
* |
||||
* @return bool true if optional, false if mandatory |
||||
*/ |
||||
public function isOptional() |
||||
{ |
||||
return $this->optional; |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* Represents a PHP requirement in form of a php.ini configuration. |
||||
* |
||||
* @author Tobias Schultze <http://tobion.de> |
||||
*/ |
||||
class PhpIniRequirement extends Requirement |
||||
{ |
||||
/** |
||||
* Constructor that initializes the requirement. |
||||
* |
||||
* @param string $cfgName The configuration name used for ini_get() |
||||
* @param bool|callback $evaluation Either a boolean indicating whether the configuration should evaluate to true or false, |
||||
* or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement |
||||
* @param bool $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false. |
||||
* This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin. |
||||
* Example: You require a config to be true but PHP later removes this config and defaults it to true internally. |
||||
* @param string|null $testMessage The message for testing the requirement (when null and $evaluation is a boolean a default message is derived) |
||||
* @param string|null $helpHtml The help text formatted in HTML for resolving the problem (when null and $evaluation is a boolean a default help is derived) |
||||
* @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags) |
||||
* @param bool $optional Whether this is only an optional recommendation not a mandatory requirement |
||||
*/ |
||||
public function __construct($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null, $optional = false) |
||||
{ |
||||
$cfgValue = ini_get($cfgName); |
||||
|
||||
if (is_callable($evaluation)) { |
||||
if (null === $testMessage || null === $helpHtml) { |
||||
throw new InvalidArgumentException('You must provide the parameters testMessage and helpHtml for a callback evaluation.'); |
||||
} |
||||
|
||||
$fulfilled = call_user_func($evaluation, $cfgValue); |
||||
} else { |
||||
if (null === $testMessage) { |
||||
$testMessage = sprintf('%s %s be %s in php.ini', |
||||
$cfgName, |
||||
$optional ? 'should' : 'must', |
||||
$evaluation ? 'enabled' : 'disabled' |
||||
); |
||||
} |
||||
|
||||
if (null === $helpHtml) { |
||||
$helpHtml = sprintf('Set <strong>%s</strong> to <strong>%s</strong> in php.ini<a href="#phpini">*</a>.', |
||||
$cfgName, |
||||
$evaluation ? 'on' : 'off' |
||||
); |
||||
} |
||||
|
||||
$fulfilled = $evaluation == $cfgValue; |
||||
} |
||||
|
||||
parent::__construct($fulfilled || ($approveCfgAbsence && false === $cfgValue), $testMessage, $helpHtml, $helpText, $optional); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* A RequirementCollection represents a set of Requirement instances. |
||||
* |
||||
* @author Tobias Schultze <http://tobion.de> |
||||
*/ |
||||
class RequirementCollection implements IteratorAggregate |
||||
{ |
||||
private $requirements = array(); |
||||
|
||||
/** |
||||
* Gets the current RequirementCollection as an Iterator. |
||||
* |
||||
* @return Traversable A Traversable interface |
||||
*/ |
||||
public function getIterator() |
||||
{ |
||||
return new ArrayIterator($this->requirements); |
||||
} |
||||
|
||||
/** |
||||
* Adds a Requirement. |
||||
* |
||||
* @param Requirement $requirement A Requirement instance |
||||
*/ |
||||
public function add(Requirement $requirement) |
||||
{ |
||||
$this->requirements[] = $requirement; |
||||
} |
||||
|
||||
/** |
||||
* Adds a mandatory requirement. |
||||
* |
||||
* @param bool $fulfilled Whether the requirement is fulfilled |
||||
* @param string $testMessage The message for testing the requirement |
||||
* @param string $helpHtml The help text formatted in HTML for resolving the problem |
||||
* @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags) |
||||
*/ |
||||
public function addRequirement($fulfilled, $testMessage, $helpHtml, $helpText = null) |
||||
{ |
||||
$this->add(new Requirement($fulfilled, $testMessage, $helpHtml, $helpText, false)); |
||||
} |
||||
|
||||
/** |
||||
* Adds an optional recommendation. |
||||
* |
||||
* @param bool $fulfilled Whether the recommendation is fulfilled |
||||
* @param string $testMessage The message for testing the recommendation |
||||
* @param string $helpHtml The help text formatted in HTML for resolving the problem |
||||
* @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags) |
||||
*/ |
||||
public function addRecommendation($fulfilled, $testMessage, $helpHtml, $helpText = null) |
||||
{ |
||||
$this->add(new Requirement($fulfilled, $testMessage, $helpHtml, $helpText, true)); |
||||
} |
||||
|
||||
/** |
||||
* Adds a mandatory requirement in form of a php.ini configuration. |
||||
* |
||||
* @param string $cfgName The configuration name used for ini_get() |
||||
* @param bool|callback $evaluation Either a boolean indicating whether the configuration should evaluate to true or false, |
||||
* or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement |
||||
* @param bool $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false. |
||||
* This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin. |
||||
* Example: You require a config to be true but PHP later removes this config and defaults it to true internally. |
||||
* @param string $testMessage The message for testing the requirement (when null and $evaluation is a boolean a default message is derived) |
||||
* @param string $helpHtml The help text formatted in HTML for resolving the problem (when null and $evaluation is a boolean a default help is derived) |
||||
* @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags) |
||||
*/ |
||||
public function addPhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null) |
||||
{ |
||||
$this->add(new PhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence, $testMessage, $helpHtml, $helpText, false)); |
||||
} |
||||
|
||||
/** |
||||
* Adds an optional recommendation in form of a php.ini configuration. |
||||
* |
||||
* @param string $cfgName The configuration name used for ini_get() |
||||
* @param bool|callback $evaluation Either a boolean indicating whether the configuration should evaluate to true or false, |
||||
* or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement |
||||
* @param bool $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false. |
||||
* This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin. |
||||
* Example: You require a config to be true but PHP later removes this config and defaults it to true internally. |
||||
* @param string $testMessage The message for testing the requirement (when null and $evaluation is a boolean a default message is derived) |
||||
* @param string $helpHtml The help text formatted in HTML for resolving the problem (when null and $evaluation is a boolean a default help is derived) |
||||
* @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags) |
||||
*/ |
||||
public function addPhpIniRecommendation($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null) |
||||
{ |
||||
$this->add(new PhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence, $testMessage, $helpHtml, $helpText, true)); |
||||
} |
||||
|
||||
/** |
||||
* Adds a requirement collection to the current set of requirements. |
||||
* |
||||
* @param RequirementCollection $collection A RequirementCollection instance |
||||
*/ |
||||
public function addCollection(RequirementCollection $collection) |
||||
{ |
||||
$this->requirements = array_merge($this->requirements, $collection->all()); |
||||
} |
||||
|
||||
/** |
||||
* Returns both requirements and recommendations. |
||||
* |
||||
* @return array Array of Requirement instances |
||||
*/ |
||||
public function all() |
||||
{ |
||||
return $this->requirements; |
||||
} |
||||
|
||||
/** |
||||
* Returns all mandatory requirements. |
||||
* |
||||
* @return array Array of Requirement instances |
||||
*/ |
||||
public function getRequirements() |
||||
{ |
||||
$array = array(); |
||||
foreach ($this->requirements as $req) { |
||||
if (!$req->isOptional()) { |
||||
$array[] = $req; |
||||
} |
||||
} |
||||
|
||||
return $array; |
||||
} |
||||
|
||||
/** |
||||
* Returns the mandatory requirements that were not met. |
||||
* |
||||
* @return array Array of Requirement instances |
||||
*/ |
||||
public function getFailedRequirements() |
||||
{ |
||||
$array = array(); |
||||
foreach ($this->requirements as $req) { |
||||
if (!$req->isFulfilled() && !$req->isOptional()) { |
||||
$array[] = $req; |
||||
} |
||||
} |
||||
|
||||
return $array; |
||||
} |
||||
|
||||
/** |
||||
* Returns all optional recommendations. |
||||
* |
||||
* @return array Array of Requirement instances |
||||
*/ |
||||
public function getRecommendations() |
||||
{ |
||||
$array = array(); |
||||
foreach ($this->requirements as $req) { |
||||
if ($req->isOptional()) { |
||||
$array[] = $req; |
||||
} |
||||
} |
||||
|
||||
return $array; |
||||
} |
||||
|
||||
/** |
||||
* Returns the recommendations that were not met. |
||||
* |
||||
* @return array Array of Requirement instances |
||||
*/ |
||||
public function getFailedRecommendations() |
||||
{ |
||||
$array = array(); |
||||
foreach ($this->requirements as $req) { |
||||
if (!$req->isFulfilled() && $req->isOptional()) { |
||||
$array[] = $req; |
||||
} |
||||
} |
||||
|
||||
return $array; |
||||
} |
||||
|
||||
/** |
||||
* Returns whether a php.ini configuration is not correct. |
||||
* |
||||
* @return bool php.ini configuration problem? |
||||
*/ |
||||
public function hasPhpIniConfigIssue() |
||||
{ |
||||
foreach ($this->requirements as $req) { |
||||
if (!$req->isFulfilled() && $req instanceof PhpIniRequirement) { |
||||
return true; |
||||
} |
||||
} |
||||
|
||||
return false; |
||||
} |
||||
|
||||
/** |
||||
* Returns the PHP configuration file (php.ini) path. |
||||
* |
||||
* @return string|false php.ini file path |
||||
*/ |
||||
public function getPhpIniConfigPath() |
||||
{ |
||||
return get_cfg_var('cfg_file_path'); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* This class specifies all requirements and optional recommendations that |
||||
* are necessary to run the Symfony Standard Edition. |
||||
* |
||||
* @author Tobias Schultze <http://tobion.de> |
||||
* @author Fabien Potencier <fabien@symfony.com> |
||||
*/ |
||||
class SymfonyRequirements extends RequirementCollection |
||||
{ |
||||
const REQUIRED_PHP_VERSION = '5.3.3'; |
||||
|
||||
/** |
||||
* Constructor that initializes the requirements. |
||||
*/ |
||||
public function __construct() |
||||
{ |
||||
/* mandatory requirements follow */ |
||||
|
||||
$installedPhpVersion = phpversion(); |
||||
|
||||
$this->addRequirement( |
||||
version_compare($installedPhpVersion, self::REQUIRED_PHP_VERSION, '>='), |
||||
sprintf('PHP version must be at least %s (%s installed)', self::REQUIRED_PHP_VERSION, $installedPhpVersion), |
||||
sprintf('You are running PHP version "<strong>%s</strong>", but Symfony needs at least PHP "<strong>%s</strong>" to run. |
||||
Before using Symfony, upgrade your PHP installation, preferably to the latest version.', |
||||
$installedPhpVersion, self::REQUIRED_PHP_VERSION), |
||||
sprintf('Install PHP %s or newer (installed version is %s)', self::REQUIRED_PHP_VERSION, $installedPhpVersion) |
||||
); |
||||
|
||||
$this->addRequirement( |
||||
version_compare($installedPhpVersion, '5.3.16', '!='), |
||||
'PHP version must not be 5.3.16 as Symfony won\'t work properly with it', |
||||
'Install PHP 5.3.17 or newer (or downgrade to an earlier PHP version)' |
||||
); |
||||
|
||||
$this->addRequirement( |
||||
is_dir(__DIR__.'/../vendor/composer'), |
||||
'Vendor libraries must be installed', |
||||
'Vendor libraries are missing. Install composer following instructions from <a href="http://getcomposer.org/">http://getcomposer.org/</a>. '. |
||||
'Then run "<strong>php composer.phar install</strong>" to install them.' |
||||
); |
||||
|
||||
$cacheDir = is_dir(__DIR__.'/../var/cache') ? __DIR__.'/../var/cache' : __DIR__.'/cache'; |
||||
|
||||
$this->addRequirement( |
||||
is_writable($cacheDir), |
||||
'app/cache/ or var/cache/ directory must be writable', |
||||
'Change the permissions of either "<strong>app/cache/</strong>" or "<strong>var/cache/</strong>" directory so that the web server can write into it.' |
||||
); |
||||
|
||||
$logsDir = is_dir(__DIR__.'/../var/logs') ? __DIR__.'/../var/logs' : __DIR__.'/logs'; |
||||
|
||||
$this->addRequirement( |
||||
is_writable($logsDir), |
||||
'app/logs/ or var/logs/ directory must be writable', |
||||
'Change the permissions of either "<strong>app/logs/</strong>" or "<strong>var/logs/</strong>" directory so that the web server can write into it.' |
||||
); |
||||
|
||||
$this->addPhpIniRequirement( |
||||
'date.timezone', true, false, |
||||
'date.timezone setting must be set', |
||||
'Set the "<strong>date.timezone</strong>" setting in php.ini<a href="#phpini">*</a> (like Europe/Paris).' |
||||
); |
||||
|
||||
if (version_compare($installedPhpVersion, self::REQUIRED_PHP_VERSION, '>=')) { |
||||
$timezones = array(); |
||||
foreach (DateTimeZone::listAbbreviations() as $abbreviations) { |
||||
foreach ($abbreviations as $abbreviation) { |
||||
$timezones[$abbreviation['timezone_id']] = true; |
||||
} |
||||
} |
||||
|
||||
$this->addRequirement( |
||||
isset($timezones[@date_default_timezone_get()]), |
||||
sprintf('Configured default timezone "%s" must be supported by your installation of PHP', @date_default_timezone_get()), |
||||
'Your default timezone is not supported by PHP. Check for typos in your <strong>php.ini</strong> file and have a look at the list of deprecated timezones at <a href="http://php.net/manual/en/timezones.others.php">http://php.net/manual/en/timezones.others.php</a>.' |
||||
); |
||||
} |
||||
|
||||
$this->addRequirement( |
||||
function_exists('iconv'), |
||||
'iconv() must be available', |
||||
'Install and enable the <strong>iconv</strong> extension.' |
||||
); |
||||
|
||||
$this->addRequirement( |
||||
function_exists('json_encode'), |
||||
'json_encode() must be available', |
||||
'Install and enable the <strong>JSON</strong> extension.' |
||||
); |
||||
|
||||
$this->addRequirement( |
||||
function_exists('session_start'), |
||||
'session_start() must be available', |
||||
'Install and enable the <strong>session</strong> extension.' |
||||
); |
||||
|
||||
$this->addRequirement( |
||||
function_exists('ctype_alpha'), |
||||
'ctype_alpha() must be available', |
||||
'Install and enable the <strong>ctype</strong> extension.' |
||||
); |
||||
|
||||
$this->addRequirement( |
||||
function_exists('token_get_all'), |
||||
'token_get_all() must be available', |
||||
'Install and enable the <strong>Tokenizer</strong> extension.' |
||||
); |
||||
|
||||
$this->addRequirement( |
||||
function_exists('simplexml_import_dom'), |
||||
'simplexml_import_dom() must be available', |
||||
'Install and enable the <strong>SimpleXML</strong> extension.' |
||||
); |
||||
|
||||
if (function_exists('apc_store') && ini_get('apc.enabled')) { |
||||
if (version_compare($installedPhpVersion, '5.4.0', '>=')) { |
||||
$this->addRequirement( |
||||
version_compare(phpversion('apc'), '3.1.13', '>='), |
||||
'APC version must be at least 3.1.13 when using PHP 5.4', |
||||
'Upgrade your <strong>APC</strong> extension (3.1.13+).' |
||||
); |
||||
} else { |
||||
$this->addRequirement( |
||||
version_compare(phpversion('apc'), '3.0.17', '>='), |
||||
'APC version must be at least 3.0.17', |
||||
'Upgrade your <strong>APC</strong> extension (3.0.17+).' |
||||
); |
||||
} |
||||
} |
||||
|
||||
$this->addPhpIniRequirement('detect_unicode', false); |
||||
|
||||
if (extension_loaded('suhosin')) { |
||||
$this->addPhpIniRequirement( |
||||
'suhosin.executor.include.whitelist', |
||||
create_function('$cfgValue', 'return false !== stripos($cfgValue, "phar");'), |
||||
false, |
||||
'suhosin.executor.include.whitelist must be configured correctly in php.ini', |
||||
'Add "<strong>phar</strong>" to <strong>suhosin.executor.include.whitelist</strong> in php.ini<a href="#phpini">*</a>.' |
||||
); |
||||
} |
||||
|
||||
if (extension_loaded('xdebug')) { |
||||
$this->addPhpIniRequirement( |
||||
'xdebug.show_exception_trace', false, true |
||||
); |
||||
|
||||
$this->addPhpIniRequirement( |
||||
'xdebug.scream', false, true |
||||
); |
||||
|
||||
$this->addPhpIniRecommendation( |
||||
'xdebug.max_nesting_level', |
||||
create_function('$cfgValue', 'return $cfgValue > 100;'), |
||||
true, |
||||
'xdebug.max_nesting_level should be above 100 in php.ini', |
||||
'Set "<strong>xdebug.max_nesting_level</strong>" to e.g. "<strong>250</strong>" in php.ini<a href="#phpini">*</a> to stop Xdebug\'s infinite recursion protection erroneously throwing a fatal error in your project.' |
||||
); |
||||
} |
||||
|
||||
$pcreVersion = defined('PCRE_VERSION') ? (float) PCRE_VERSION : null; |
||||
|
||||
$this->addRequirement( |
||||
null !== $pcreVersion, |
||||
'PCRE extension must be available', |
||||
'Install the <strong>PCRE</strong> extension (version 8.0+).' |
||||
); |
||||
|
||||
if (extension_loaded('mbstring')) { |
||||
$this->addPhpIniRequirement( |
||||
'mbstring.func_overload', |
||||
create_function('$cfgValue', 'return (int) $cfgValue === 0;'), |
||||
true, |
||||
'string functions should not be overloaded', |
||||
'Set "<strong>mbstring.func_overload</strong>" to <strong>0</strong> in php.ini<a href="#phpini">*</a> to disable function overloading by the mbstring extension.' |
||||
); |
||||
} |
||||
|
||||
/* optional recommendations follow */ |
||||
|
||||
if (file_exists(__DIR__.'/../vendor/composer')) { |
||||
require_once __DIR__.'/../vendor/autoload.php'; |
||||
|
||||
try { |
||||
$r = new ReflectionClass('Sensio\Bundle\DistributionBundle\SensioDistributionBundle'); |
||||
|
||||
$contents = file_get_contents(dirname($r->getFileName()).'/Resources/skeleton/app/SymfonyRequirements.php'); |
||||
} catch (ReflectionException $e) { |
||||
$contents = ''; |
||||
} |
||||
$this->addRecommendation( |
||||
file_get_contents(__FILE__) === $contents, |
||||
'Requirements file should be up-to-date', |
||||
'Your requirements file is outdated. Run composer install and re-check your configuration.' |
||||
); |
||||
} |
||||
|
||||
$this->addRecommendation( |
||||
version_compare($installedPhpVersion, '5.3.4', '>='), |
||||
'You should use at least PHP 5.3.4 due to PHP bug #52083 in earlier versions', |
||||
'Your project might malfunction randomly due to PHP bug #52083 ("Notice: Trying to get property of non-object"). Install PHP 5.3.4 or newer.' |
||||
); |
||||
|
||||
$this->addRecommendation( |
||||
version_compare($installedPhpVersion, '5.3.8', '>='), |
||||
'When using annotations you should have at least PHP 5.3.8 due to PHP bug #55156', |
||||
'Install PHP 5.3.8 or newer if your project uses annotations.' |
||||
); |
||||
|
||||
$this->addRecommendation( |
||||
version_compare($installedPhpVersion, '5.4.0', '!='), |
||||
'You should not use PHP 5.4.0 due to the PHP bug #61453', |
||||
'Your project might not work properly due to the PHP bug #61453 ("Cannot dump definitions which have method calls"). Install PHP 5.4.1 or newer.' |
||||
); |
||||
|
||||
$this->addRecommendation( |
||||
version_compare($installedPhpVersion, '5.4.11', '>='), |
||||
'When using the logout handler from the Symfony Security Component, you should have at least PHP 5.4.11 due to PHP bug #63379 (as a workaround, you can also set invalidate_session to false in the security logout handler configuration)', |
||||
'Install PHP 5.4.11 or newer if your project uses the logout handler from the Symfony Security Component.' |
||||
); |
||||
|
||||
$this->addRecommendation( |
||||
(version_compare($installedPhpVersion, '5.3.18', '>=') && version_compare($installedPhpVersion, '5.4.0', '<')) |
||||
|| |
||||
version_compare($installedPhpVersion, '5.4.8', '>='), |
||||
'You should use PHP 5.3.18+ or PHP 5.4.8+ to always get nice error messages for fatal errors in the development environment due to PHP bug #61767/#60909', |
||||
'Install PHP 5.3.18+ or PHP 5.4.8+ if you want nice error messages for all fatal errors in the development environment.' |
||||
); |
||||
|
||||
if (null !== $pcreVersion) { |
||||
$this->addRecommendation( |
||||
$pcreVersion >= 8.0, |
||||
sprintf('PCRE extension should be at least version 8.0 (%s installed)', $pcreVersion), |
||||
'<strong>PCRE 8.0+</strong> is preconfigured in PHP since 5.3.2 but you are using an outdated version of it. Symfony probably works anyway but it is recommended to upgrade your PCRE extension.' |
||||
); |
||||
} |
||||
|
||||
$this->addRecommendation( |
||||
class_exists('DomDocument'), |
||||
'PHP-DOM and PHP-XML modules should be installed', |
||||
'Install and enable the <strong>PHP-DOM</strong> and the <strong>PHP-XML</strong> modules.' |
||||
); |
||||
|
||||
$this->addRecommendation( |
||||
function_exists('mb_strlen'), |
||||
'mb_strlen() should be available', |
||||
'Install and enable the <strong>mbstring</strong> extension.' |
||||
); |
||||
|
||||
$this->addRecommendation( |
||||
function_exists('iconv'), |
||||
'iconv() should be available', |
||||
'Install and enable the <strong>iconv</strong> extension.' |
||||
); |
||||
|
||||
$this->addRecommendation( |
||||
function_exists('utf8_decode'), |
||||
'utf8_decode() should be available', |
||||
'Install and enable the <strong>XML</strong> extension.' |
||||
); |
||||
|
||||
$this->addRecommendation( |
||||
function_exists('filter_var'), |
||||
'filter_var() should be available', |
||||
'Install and enable the <strong>filter</strong> extension.' |
||||
); |
||||
|
||||
if (!defined('PHP_WINDOWS_VERSION_BUILD')) { |
||||
$this->addRecommendation( |
||||
function_exists('posix_isatty'), |
||||
'posix_isatty() should be available', |
||||
'Install and enable the <strong>php_posix</strong> extension (used to colorize the CLI output).' |
||||
); |
||||
} |
||||
|
||||
$this->addRecommendation( |
||||
extension_loaded('intl'), |
||||
'intl extension should be available', |
||||
'Install and enable the <strong>intl</strong> extension (used for validators).' |
||||
); |
||||
|
||||
if (extension_loaded('intl')) { |
||||
// in some WAMP server installations, new Collator() returns null |
||||
$this->addRecommendation( |
||||
null !== new Collator('fr_FR'), |
||||
'intl extension should be correctly configured', |
||||
'The intl extension does not behave properly. This problem is typical on PHP 5.3.X x64 WIN builds.' |
||||
); |
||||
|
||||
// check for compatible ICU versions (only done when you have the intl extension) |
||||
if (defined('INTL_ICU_VERSION')) { |
||||
$version = INTL_ICU_VERSION; |
||||
} else { |
||||
$reflector = new ReflectionExtension('intl'); |
||||
|
||||
ob_start(); |
||||
$reflector->info(); |
||||
$output = strip_tags(ob_get_clean()); |
||||
|
||||
preg_match('/^ICU version +(?:=> )?(.*)$/m', $output, $matches); |
||||
$version = $matches[1]; |
||||
} |
||||
|
||||
$this->addRecommendation( |
||||
version_compare($version, '4.0', '>='), |
||||
'intl ICU version should be at least 4+', |
||||
'Upgrade your <strong>intl</strong> extension with a newer ICU version (4+).' |
||||
); |
||||
|
||||
$this->addPhpIniRecommendation( |
||||
'intl.error_level', |
||||
create_function('$cfgValue', 'return (int) $cfgValue === 0;'), |
||||
true, |
||||
'intl.error_level should be 0 in php.ini', |
||||
'Set "<strong>intl.error_level</strong>" to "<strong>0</strong>" in php.ini<a href="#phpini">*</a> to inhibit the messages when an error occurs in ICU functions.' |
||||
); |
||||
} |
||||
|
||||
$accelerator = |
||||
(extension_loaded('eaccelerator') && ini_get('eaccelerator.enable')) |
||||
|| |
||||
(extension_loaded('apc') && ini_get('apc.enabled')) |
||||
|| |
||||
(extension_loaded('Zend Optimizer+') && ini_get('zend_optimizerplus.enable')) |
||||
|| |
||||
(extension_loaded('Zend OPcache') && ini_get('opcache.enable')) |
||||
|| |
||||
(extension_loaded('xcache') && ini_get('xcache.cacher')) |
||||
|| |
||||
(extension_loaded('wincache') && ini_get('wincache.ocenabled')) |
||||
; |
||||
|
||||
$this->addRecommendation( |
||||
$accelerator, |
||||
'a PHP accelerator should be installed', |
||||
'Install and/or enable a <strong>PHP accelerator</strong> (highly recommended).' |
||||
); |
||||
|
||||
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { |
||||
$this->addRecommendation( |
||||
$this->getRealpathCacheSize() > 1000, |
||||
'realpath_cache_size should be above 1024 in php.ini', |
||||
'Set "<strong>realpath_cache_size</strong>" to e.g. "<strong>1024</strong>" in php.ini<a href="#phpini">*</a> to improve performance on windows.' |
||||
); |
||||
} |
||||
|
||||
$this->addPhpIniRecommendation('short_open_tag', false); |
||||
|
||||
$this->addPhpIniRecommendation('magic_quotes_gpc', false, true); |
||||
|
||||
$this->addPhpIniRecommendation('register_globals', false, true); |
||||
|
||||
$this->addPhpIniRecommendation('session.auto_start', false); |
||||
|
||||
$this->addRecommendation( |
||||
class_exists('PDO'), |
||||
'PDO should be installed', |
||||
'Install <strong>PDO</strong> (mandatory for Doctrine).' |
||||
); |
||||
|
||||
if (class_exists('PDO')) { |
||||
$drivers = PDO::getAvailableDrivers(); |
||||
$this->addRecommendation( |
||||
count($drivers) > 0, |
||||
sprintf('PDO should have some drivers installed (currently available: %s)', count($drivers) ? implode(', ', $drivers) : 'none'), |
||||
'Install <strong>PDO drivers</strong> (mandatory for Doctrine).' |
||||
); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* Loads realpath_cache_size from php.ini and converts it to int. |
||||
* |
||||
* (e.g. 16k is converted to 16384 int) |
||||
* |
||||
* @return int |
||||
*/ |
||||
protected function getRealpathCacheSize() |
||||
{ |
||||
$size = ini_get('realpath_cache_size'); |
||||
$size = trim($size); |
||||
$unit = strtolower(substr($size, -1, 1)); |
||||
switch ($unit) { |
||||
case 'g': |
||||
return $size * 1024 * 1024 * 1024; |
||||
case 'm': |
||||
return $size * 1024 * 1024; |
||||
case 'k': |
||||
return $size * 1024; |
||||
default: |
||||
return (int) $size; |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,13 @@ |
||||
<?php |
||||
|
||||
use Doctrine\Common\Annotations\AnnotationRegistry; |
||||
use Composer\Autoload\ClassLoader; |
||||
|
||||
/** |
||||
* @var ClassLoader $loader |
||||
*/ |
||||
$loader = require __DIR__.'/../vendor/autoload.php'; |
||||
|
||||
AnnotationRegistry::registerLoader(array($loader, 'loadClass')); |
||||
|
||||
return $loader; |
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,142 @@ |
||||
<?php |
||||
|
||||
require_once dirname(__FILE__).'/SymfonyRequirements.php'; |
||||
|
||||
$lineSize = 70; |
||||
$symfonyRequirements = new SymfonyRequirements(); |
||||
$iniPath = $symfonyRequirements->getPhpIniConfigPath(); |
||||
|
||||
echo_title('Symfony Requirements Checker'); |
||||
|
||||
echo '> PHP is using the following php.ini file:'.PHP_EOL; |
||||
if ($iniPath) { |
||||
echo_style('green', ' '.$iniPath); |
||||
} else { |
||||
echo_style('warning', ' WARNING: No configuration file (php.ini) used by PHP!'); |
||||
} |
||||
|
||||
echo PHP_EOL.PHP_EOL; |
||||
|
||||
echo '> Checking Symfony requirements:'.PHP_EOL.' '; |
||||
|
||||
$messages = array(); |
||||
foreach ($symfonyRequirements->getRequirements() as $req) { |
||||
/** @var $req Requirement */ |
||||
if ($helpText = get_error_message($req, $lineSize)) { |
||||
echo_style('red', 'E'); |
||||
$messages['error'][] = $helpText; |
||||
} else { |
||||
echo_style('green', '.'); |
||||
} |
||||
} |
||||
|
||||
$checkPassed = empty($messages['error']); |
||||
|
||||
foreach ($symfonyRequirements->getRecommendations() as $req) { |
||||
if ($helpText = get_error_message($req, $lineSize)) { |
||||
echo_style('yellow', 'W'); |
||||
$messages['warning'][] = $helpText; |
||||
} else { |
||||
echo_style('green', '.'); |
||||
} |
||||
} |
||||
|
||||
if ($checkPassed) { |
||||
echo_block('success', 'OK', 'Your system is ready to run Symfony projects'); |
||||
} else { |
||||
echo_block('error', 'ERROR', 'Your system is not ready to run Symfony projects'); |
||||
|
||||
echo_title('Fix the following mandatory requirements', 'red'); |
||||
|
||||
foreach ($messages['error'] as $helpText) { |
||||
echo ' * '.$helpText.PHP_EOL; |
||||
} |
||||
} |
||||
|
||||
if (!empty($messages['warning'])) { |
||||
echo_title('Optional recommendations to improve your setup', 'yellow'); |
||||
|
||||
foreach ($messages['warning'] as $helpText) { |
||||
echo ' * '.$helpText.PHP_EOL; |
||||
} |
||||
} |
||||
|
||||
echo PHP_EOL; |
||||
echo_style('title', 'Note'); |
||||
echo ' The command console could use a different php.ini file'.PHP_EOL; |
||||
echo_style('title', '~~~~'); |
||||
echo ' than the one used with your web server. To be on the'.PHP_EOL; |
||||
echo ' safe side, please check the requirements from your web'.PHP_EOL; |
||||
echo ' server using the '; |
||||
echo_style('yellow', 'web/config.php'); |
||||
echo ' script.'.PHP_EOL; |
||||
echo PHP_EOL; |
||||
|
||||
exit($checkPassed ? 0 : 1); |
||||
|
||||
function get_error_message(Requirement $requirement, $lineSize) |
||||
{ |
||||
if ($requirement->isFulfilled()) { |
||||
return; |
||||
} |
||||
|
||||
$errorMessage = wordwrap($requirement->getTestMessage(), $lineSize - 3, PHP_EOL.' ').PHP_EOL; |
||||
$errorMessage .= ' > '.wordwrap($requirement->getHelpText(), $lineSize - 5, PHP_EOL.' > ').PHP_EOL; |
||||
|
||||
return $errorMessage; |
||||
} |
||||
|
||||
function echo_title($title, $style = null) |
||||
{ |
||||
$style = $style ?: 'title'; |
||||
|
||||
echo PHP_EOL; |
||||
echo_style($style, $title.PHP_EOL); |
||||
echo_style($style, str_repeat('~', strlen($title)).PHP_EOL); |
||||
echo PHP_EOL; |
||||
} |
||||
|
||||
function echo_style($style, $message) |
||||
{ |
||||
// ANSI color codes |
||||
$styles = array( |
||||
'reset' => "\033[0m", |
||||
'red' => "\033[31m", |
||||
'green' => "\033[32m", |
||||
'yellow' => "\033[33m", |
||||
'error' => "\033[37;41m", |
||||
'success' => "\033[37;42m", |
||||
'title' => "\033[34m", |
||||
); |
||||
$supports = has_color_support(); |
||||
|
||||
echo($supports ? $styles[$style] : '').$message.($supports ? $styles['reset'] : ''); |
||||
} |
||||
|
||||
function echo_block($style, $title, $message) |
||||
{ |
||||
$message = ' '.trim($message).' '; |
||||
$width = strlen($message); |
||||
|
||||
echo PHP_EOL.PHP_EOL; |
||||
|
||||
echo_style($style, str_repeat(' ', $width).PHP_EOL); |
||||
echo_style($style, str_pad(' ['.$title.']', $width, ' ', STR_PAD_RIGHT).PHP_EOL); |
||||
echo_style($style, str_pad($message, $width, ' ', STR_PAD_RIGHT).PHP_EOL); |
||||
echo_style($style, str_repeat(' ', $width).PHP_EOL); |
||||
} |
||||
|
||||
function has_color_support() |
||||
{ |
||||
static $support; |
||||
|
||||
if (null === $support) { |
||||
if (DIRECTORY_SEPARATOR == '\\') { |
||||
$support = false !== getenv('ANSICON') || 'ON' === getenv('ConEmuANSI'); |
||||
} else { |
||||
$support = function_exists('posix_isatty') && @posix_isatty(STDOUT); |
||||
} |
||||
} |
||||
|
||||
return $support; |
||||
} |
||||
@ -0,0 +1,27 @@ |
||||
#!/usr/bin/env php |
||||
<?php |
||||
|
||||
// if you don't want to setup permissions the proper way, just uncomment the following PHP line |
||||
// read http://symfony.com/doc/current/book/installation.html#configuration-and-setup for more information |
||||
//umask(0000); |
||||
|
||||
set_time_limit(0); |
||||
|
||||
require_once __DIR__.'/bootstrap.php.cache'; |
||||
require_once __DIR__.'/AppKernel.php'; |
||||
|
||||
use Symfony\Bundle\FrameworkBundle\Console\Application; |
||||
use Symfony\Component\Console\Input\ArgvInput; |
||||
use Symfony\Component\Debug\Debug; |
||||
|
||||
$input = new ArgvInput(); |
||||
$env = $input->getParameterOption(array('--env', '-e'), getenv('SYMFONY_ENV') ?: 'dev'); |
||||
$debug = getenv('SYMFONY_DEBUG') !== '0' && !$input->hasParameterOption(array('--no-debug', '')) && $env !== 'prod'; |
||||
|
||||
if ($debug) { |
||||
Debug::enable(); |
||||
} |
||||
|
||||
$kernel = new AppKernel($env, $debug); |
||||
$application = new Application($kernel); |
||||
$application->run($input); |
||||
@ -0,0 +1,21 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\ClassificationBundle; |
||||
|
||||
use Symfony\Component\HttpKernel\Bundle\Bundle; |
||||
|
||||
/** |
||||
* Class ChamiloClassificationBundle |
||||
* @package Chamilo\ClassificationBundle |
||||
*/ |
||||
class ChamiloClassificationBundle extends Bundle |
||||
{ |
||||
/** |
||||
* {@inheritdoc} |
||||
*/ |
||||
public function getParent() |
||||
{ |
||||
return 'SonataClassificationBundle'; |
||||
} |
||||
} |
||||
@ -0,0 +1,40 @@ |
||||
<?php |
||||
|
||||
/** |
||||
* This file is part of the <name> project. |
||||
* |
||||
* (c) <yourname> <youremail> |
||||
* |
||||
* For the full copyright and license information, please view the LICENSE |
||||
* file that was distributed with this source code. |
||||
*/ |
||||
|
||||
namespace Chamilo\ClassificationBundle\Document; |
||||
|
||||
use Sonata\ClassificationBundle\Document\BaseCategory as BaseCategory; |
||||
|
||||
/** |
||||
* This file has been generated by the EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends ) |
||||
* |
||||
* References : |
||||
* working with object : http://www.doctrine-project.org/docs/mongodb_odm/1.0/en/reference/working-with-objects.html |
||||
* |
||||
* @author <yourname> <youremail> |
||||
*/ |
||||
class Category extends BaseCategory |
||||
{ |
||||
/** |
||||
* @var integer $id |
||||
*/ |
||||
protected $id; |
||||
|
||||
/** |
||||
* Get id |
||||
* |
||||
* @return integer $id |
||||
*/ |
||||
public function getId() |
||||
{ |
||||
return $this->id; |
||||
} |
||||
} |
||||
@ -0,0 +1,40 @@ |
||||
<?php |
||||
|
||||
/** |
||||
* This file is part of the <name> project. |
||||
* |
||||
* (c) <yourname> <youremail> |
||||
* |
||||
* For the full copyright and license information, please view the LICENSE |
||||
* file that was distributed with this source code. |
||||
*/ |
||||
|
||||
namespace Chamilo\ClassificationBundle\Document; |
||||
|
||||
use Sonata\ClassificationBundle\Document\BaseTag as BaseTag; |
||||
|
||||
/** |
||||
* This file has been generated by the EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends ) |
||||
* |
||||
* References : |
||||
* working with object : http://www.doctrine-project.org/docs/mongodb_odm/1.0/en/reference/working-with-objects.html |
||||
* |
||||
* @author <yourname> <youremail> |
||||
*/ |
||||
class Tag extends BaseTag |
||||
{ |
||||
/** |
||||
* @var integer $id |
||||
*/ |
||||
protected $id; |
||||
|
||||
/** |
||||
* Get id |
||||
* |
||||
* @return integer $id |
||||
*/ |
||||
public function getId() |
||||
{ |
||||
return $this->id; |
||||
} |
||||
} |
||||
@ -0,0 +1,40 @@ |
||||
<?php |
||||
|
||||
/** |
||||
* This file is part of the <name> project. |
||||
* |
||||
* (c) <yourname> <youremail> |
||||
* |
||||
* For the full copyright and license information, please view the LICENSE |
||||
* file that was distributed with this source code. |
||||
*/ |
||||
|
||||
namespace Chamilo\ClassificationBundle\Entity; |
||||
|
||||
use Sonata\ClassificationBundle\Entity\BaseCategory as BaseCategory; |
||||
|
||||
/** |
||||
* This file has been generated by the Sonata EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends ) |
||||
* |
||||
* References : |
||||
* working with object : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/working-with-objects/en |
||||
* |
||||
* @author <yourname> <youremail> |
||||
*/ |
||||
class Category extends BaseCategory |
||||
{ |
||||
/** |
||||
* @var integer $id |
||||
*/ |
||||
protected $id; |
||||
|
||||
/** |
||||
* Get id |
||||
* |
||||
* @return integer $id |
||||
*/ |
||||
public function getId() |
||||
{ |
||||
return $this->id; |
||||
} |
||||
} |
||||
@ -0,0 +1,40 @@ |
||||
<?php |
||||
|
||||
/** |
||||
* This file is part of the <name> project. |
||||
* |
||||
* (c) <yourname> <youremail> |
||||
* |
||||
* For the full copyright and license information, please view the LICENSE |
||||
* file that was distributed with this source code. |
||||
*/ |
||||
|
||||
namespace Chamilo\ClassificationBundle\Entity; |
||||
|
||||
use Sonata\ClassificationBundle\Entity\BaseCollection as BaseCollection; |
||||
|
||||
/** |
||||
* This file has been generated by the Sonata EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends ) |
||||
* |
||||
* References : |
||||
* working with object : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/working-with-objects/en |
||||
* |
||||
* @author <yourname> <youremail> |
||||
*/ |
||||
class Collection extends BaseCollection |
||||
{ |
||||
/** |
||||
* @var integer $id |
||||
*/ |
||||
protected $id; |
||||
|
||||
/** |
||||
* Get id |
||||
* |
||||
* @return integer $id |
||||
*/ |
||||
public function getId() |
||||
{ |
||||
return $this->id; |
||||
} |
||||
} |
||||
@ -0,0 +1,42 @@ |
||||
<?php |
||||
|
||||
/** |
||||
* This file is part of the <name> project. |
||||
* |
||||
* (c) <yourname> <youremail> |
||||
* |
||||
* For the full copyright and license information, please view the LICENSE |
||||
* file that was distributed with this source code. |
||||
*/ |
||||
|
||||
namespace Chamilo\ClassificationBundle\Entity; |
||||
|
||||
use Sonata\ClassificationBundle\Entity\BaseContext as BaseContext; |
||||
|
||||
/** |
||||
* This file has been generated by the Sonata EasyExtends bundle. |
||||
* |
||||
* @link https://sonata-project.org/bundles/easy-extends |
||||
* |
||||
* References : |
||||
* working with object : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/working-with-objects/en |
||||
* |
||||
* @author <yourname> <youremail> |
||||
*/ |
||||
class Context extends BaseContext |
||||
{ |
||||
/** |
||||
* @var int $id |
||||
*/ |
||||
protected $id; |
||||
|
||||
/** |
||||
* Get id |
||||
* |
||||
* @return int $id |
||||
*/ |
||||
public function getId() |
||||
{ |
||||
return $this->id; |
||||
} |
||||
} |
||||
@ -0,0 +1,40 @@ |
||||
<?php |
||||
|
||||
/** |
||||
* This file is part of the <name> project. |
||||
* |
||||
* (c) <yourname> <youremail> |
||||
* |
||||
* For the full copyright and license information, please view the LICENSE |
||||
* file that was distributed with this source code. |
||||
*/ |
||||
|
||||
namespace Chamilo\ClassificationBundle\Entity; |
||||
|
||||
use Sonata\ClassificationBundle\Entity\BaseTag as BaseTag; |
||||
|
||||
/** |
||||
* This file has been generated by the Sonata EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends ) |
||||
* |
||||
* References : |
||||
* working with object : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/working-with-objects/en |
||||
* |
||||
* @author <yourname> <youremail> |
||||
*/ |
||||
class Tag extends BaseTag |
||||
{ |
||||
/** |
||||
* @var integer $id |
||||
*/ |
||||
protected $id; |
||||
|
||||
/** |
||||
* Get id |
||||
* |
||||
* @return integer $id |
||||
*/ |
||||
public function getId() |
||||
{ |
||||
return $this->id; |
||||
} |
||||
} |
||||
@ -0,0 +1,12 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<doctrine-mongo-mapping |
||||
xmlns="http://doctrine-project.org/schemas/orm/doctrine-mongo-mapping" |
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||
xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mongo-mapping |
||||
http://doctrine-project.org/schemas/orm/doctrine-mongo-mapping.xsd"> |
||||
|
||||
<document name="Chamilo\ClassificationBundle\Document\Category" |
||||
collection="classificationCategory"> |
||||
<id fieldName="id" id="true"/> |
||||
</document> |
||||
</doctrine-mongo-mapping> |
||||
@ -0,0 +1,24 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<doctrine-mapping |
||||
xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" |
||||
xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||
schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd"> |
||||
<!-- |
||||
This file has been generated by the EasyExtends bundle ( http://sonata-project.org/easy-extends ) |
||||
|
||||
References : |
||||
xsd : https://github.com/doctrine/doctrine2/blob/master/doctrine-mapping.xsd |
||||
xml mapping : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/xml-mapping/en |
||||
association mapping : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/association-mapping/en |
||||
--> |
||||
<entity |
||||
name="Chamilo\ClassificationBundle\Entity\Category" |
||||
table="classification__category" |
||||
repository-class="Doctrine\ORM\EntityRepository"> |
||||
|
||||
<id name="id" type="integer" column="id"> |
||||
<generator strategy="AUTO"/> |
||||
</id> |
||||
|
||||
</entity> |
||||
</doctrine-mapping> |
||||
@ -0,0 +1,24 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<doctrine-mapping |
||||
xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" |
||||
xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||
schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd"> |
||||
<!-- |
||||
This file has been generated by the EasyExtends bundle ( http://sonata-project.org/easy-extends ) |
||||
|
||||
References : |
||||
xsd : https://github.com/doctrine/doctrine2/blob/master/doctrine-mapping.xsd |
||||
xml mapping : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/xml-mapping/en |
||||
association mapping : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/association-mapping/en |
||||
--> |
||||
<entity |
||||
name="Chamilo\ClassificationBundle\Entity\Collection" |
||||
table="classification__collection" |
||||
repository-class="Doctrine\ORM\EntityRepository"> |
||||
|
||||
<id name="id" type="integer" column="id"> |
||||
<generator strategy="AUTO"/> |
||||
</id> |
||||
|
||||
</entity> |
||||
</doctrine-mapping> |
||||
@ -0,0 +1,24 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<doctrine-mapping |
||||
xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" |
||||
xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||
schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd"> |
||||
<!-- |
||||
This file has been generated by the EasyExtends bundle ( https://sonata-project.org/easy-extends ) |
||||
|
||||
References : |
||||
xsd : https://github.com/doctrine/doctrine2/blob/master/doctrine-mapping.xsd |
||||
xml mapping : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/xml-mapping/en |
||||
association mapping : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/association-mapping/en |
||||
--> |
||||
<entity |
||||
name="Chamilo\ClassificationBundle\Entity\Context" |
||||
table="classification__context" |
||||
repository-class="Doctrine\ORM\EntityRepository"> |
||||
|
||||
<id name="id" type="string" column="id"> |
||||
<generator strategy="NONE"/> |
||||
</id> |
||||
|
||||
</entity> |
||||
</doctrine-mapping> |
||||
@ -0,0 +1,12 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<doctrine-mongo-mapping |
||||
xmlns="http://doctrine-project.org/schemas/orm/doctrine-mongo-mapping" |
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||
xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mongo-mapping |
||||
http://doctrine-project.org/schemas/orm/doctrine-mongo-mapping.xsd"> |
||||
|
||||
<document name="Chamilo\ClassificationBundle\Document\Tag" |
||||
collection="newsTag"> |
||||
<id fieldName="id" id="true"/> |
||||
</document> |
||||
</doctrine-mongo-mapping> |
||||
@ -0,0 +1,24 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<doctrine-mapping |
||||
xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" |
||||
xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||
schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd"> |
||||
<!-- |
||||
This file has been generated by the EasyExtends bundle ( http://sonata-project.org/easy-extends ) |
||||
|
||||
References : |
||||
xsd : https://github.com/doctrine/doctrine2/blob/master/doctrine-mapping.xsd |
||||
xml mapping : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/xml-mapping/en |
||||
association mapping : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/association-mapping/en |
||||
--> |
||||
<entity |
||||
name="Chamilo\ClassificationBundle\Entity\Tag" |
||||
table="classification__tag" |
||||
repository-class="Doctrine\ORM\EntityRepository"> |
||||
|
||||
<id name="id" type="integer" column="id"> |
||||
<generator strategy="AUTO"/> |
||||
</id> |
||||
|
||||
</entity> |
||||
</doctrine-mapping> |
||||
@ -0,0 +1,17 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<serializer> |
||||
<!-- |
||||
This file has been generated by the EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends ) |
||||
|
||||
@author <yourname> <youremail> |
||||
--> |
||||
|
||||
<class name="Chamilo\ClassificationBundle\Document\Category" |
||||
exclusion-policy="all" xml-root-name="_category"> |
||||
|
||||
<property xml-attribute-map="true" name="id" type="integer" |
||||
expose="true" since-version="1.0" |
||||
groups="sonata_api_read,sonata_api_write,sonata_search"/> |
||||
|
||||
</class> |
||||
</serializer> |
||||
@ -0,0 +1,17 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<serializer> |
||||
<!-- |
||||
This file has been generated by the EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends ) |
||||
|
||||
@author <yourname> <youremail> |
||||
--> |
||||
|
||||
<class name="Chamilo\ClassificationBundle\Document\Tag" |
||||
exclusion-policy="all" xml-root-name="_tag"> |
||||
|
||||
<property xml-attribute-map="true" name="id" type="integer" |
||||
expose="true" since-version="1.0" |
||||
groups="sonata_api_read,sonata_api_write,sonata_search"/> |
||||
|
||||
</class> |
||||
</serializer> |
||||
@ -0,0 +1,17 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<serializer> |
||||
<!-- |
||||
This file has been generated by the EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends ) |
||||
|
||||
@author <yourname> <youremail> |
||||
--> |
||||
|
||||
<class name="Chamilo\ClassificationBundle\Entity\Category" |
||||
exclusion-policy="all" xml-root-name="_category"> |
||||
|
||||
<property xml-attribute-map="true" name="id" type="integer" |
||||
expose="true" since-version="1.0" |
||||
groups="sonata_api_read,sonata_api_write,sonata_search"/> |
||||
|
||||
</class> |
||||
</serializer> |
||||
@ -0,0 +1,17 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<serializer> |
||||
<!-- |
||||
This file has been generated by the EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends ) |
||||
|
||||
@author <yourname> <youremail> |
||||
--> |
||||
|
||||
<class name="Chamilo\ClassificationBundle\Entity\Collection" |
||||
exclusion-policy="all" xml-root-name="_collection"> |
||||
|
||||
<property xml-attribute-map="true" name="id" type="integer" |
||||
expose="true" since-version="1.0" |
||||
groups="sonata_api_read,sonata_api_write,sonata_search"/> |
||||
|
||||
</class> |
||||
</serializer> |
||||
@ -0,0 +1,17 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<serializer> |
||||
<!-- |
||||
This file has been generated by the EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends ) |
||||
|
||||
@author <yourname> <youremail> |
||||
--> |
||||
|
||||
<class name="Chamilo\ClassificationBundle\Entity\Context" |
||||
exclusion-policy="all" xml-root-name="_context"> |
||||
|
||||
<property xml-attribute-map="true" name="id" type="integer" |
||||
expose="true" since-version="1.0" |
||||
groups="sonata_api_read,sonata_api_write,sonata_search"/> |
||||
|
||||
</class> |
||||
</serializer> |
||||
@ -0,0 +1,17 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<serializer> |
||||
<!-- |
||||
This file has been generated by the EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends ) |
||||
|
||||
@author <yourname> <youremail> |
||||
--> |
||||
|
||||
<class name="Chamilo\ClassificationBundle\Entity\Tag" exclusion-policy="all" |
||||
xml-root-name="_tag"> |
||||
|
||||
<property xml-attribute-map="true" name="id" type="integer" |
||||
expose="true" since-version="1.0" |
||||
groups="sonata_api_read,sonata_api_write,sonata_search"/> |
||||
|
||||
</class> |
||||
</serializer> |
||||
@ -0,0 +1,67 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CoreBundle\Admin; |
||||
|
||||
use Sonata\AdminBundle\Admin\Admin; |
||||
use Sonata\AdminBundle\Form\FormMapper; |
||||
use Sonata\AdminBundle\Datagrid\DatagridMapper; |
||||
use Sonata\AdminBundle\Datagrid\ListMapper; |
||||
use Sonata\AdminBundle\Show\ShowMapper; |
||||
|
||||
use Knp\Menu\ItemInterface as MenuItemInterface; |
||||
|
||||
/** |
||||
* Class AccessUrlAdmin |
||||
* @package Chamilo\CoreBundle\Admin |
||||
*/ |
||||
class AccessUrlAdmin extends Admin |
||||
{ |
||||
/** |
||||
* @param FormMapper $formMapper |
||||
*/ |
||||
protected function configureFormFields(FormMapper $formMapper) |
||||
{ |
||||
$formMapper |
||||
->add('url', 'url') |
||||
->add('description', 'ckeditor') |
||||
->add('active') |
||||
->add('limitCourses') |
||||
->add('limitActiveCourses') |
||||
->add('limitSessions') |
||||
->add('limitUsers') |
||||
->add('limitTeachers') |
||||
->add('limitDiskSpace') |
||||
->add('email', 'email') |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* @param DatagridMapper $datagridMapper |
||||
*/ |
||||
protected function configureDatagridFilters(DatagridMapper $datagridMapper) |
||||
{ |
||||
$datagridMapper |
||||
->add('url') |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* @param ListMapper $listMapper |
||||
*/ |
||||
protected function configureListFields(ListMapper $listMapper) |
||||
{ |
||||
$listMapper |
||||
->addIdentifier('url') |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* @param $course |
||||
* @return mixed|void |
||||
*/ |
||||
public function preUpdate($course) |
||||
{ |
||||
//$course->setUsers($course->getUsers()); |
||||
} |
||||
} |
||||
@ -0,0 +1,61 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CoreBundle\Admin; |
||||
|
||||
use Sonata\AdminBundle\Admin\Admin; |
||||
use Sonata\AdminBundle\Form\FormMapper; |
||||
use Sonata\AdminBundle\Datagrid\DatagridMapper; |
||||
use Sonata\AdminBundle\Datagrid\ListMapper; |
||||
use Sonata\AdminBundle\Show\ShowMapper; |
||||
|
||||
/** |
||||
* Class CourseAdmin |
||||
* @package Chamilo\CoreBundle\Admin |
||||
*/ |
||||
class AccessUrlRelCourseAdmin extends Admin |
||||
{ |
||||
/** |
||||
* @param \Sonata\AdminBundle\Show\ShowMapper $showMapper |
||||
* |
||||
* @return void |
||||
*/ |
||||
protected function configureShowField(ShowMapper $showMapper) |
||||
{ |
||||
$showMapper |
||||
->add('id') |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* @param FormMapper $formMapper |
||||
*/ |
||||
protected function configureFormFields(FormMapper $formMapper) |
||||
{ |
||||
$formMapper |
||||
->add('url') |
||||
->end() |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* @param DatagridMapper $datagridMapper |
||||
*/ |
||||
protected function configureDatagridFilters(DatagridMapper $datagridMapper) |
||||
{ |
||||
$datagridMapper |
||||
->add('url') |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* @param ListMapper $listMapper |
||||
*/ |
||||
protected function configureListFields(ListMapper $listMapper) |
||||
{ |
||||
$listMapper |
||||
->addIdentifier('url') |
||||
; |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,43 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CoreBundle\Admin; |
||||
|
||||
use Sonata\AdminBundle\Admin\Admin; |
||||
use Sonata\AdminBundle\Form\FormMapper; |
||||
use Sonata\AdminBundle\Datagrid\DatagridMapper; |
||||
use Sonata\AdminBundle\Datagrid\ListMapper; |
||||
use Sonata\AdminBundle\Show\ShowMapper; |
||||
|
||||
use Knp\Menu\ItemInterface as MenuItemInterface; |
||||
|
||||
/** |
||||
* Class BranchAdmin |
||||
* @package Chamilo\CoreBundle\Admin |
||||
*/ |
||||
class BranchAdmin extends Admin |
||||
{ |
||||
// Fields to be shown on create/edit forms |
||||
protected function configureFormFields(FormMapper $formMapper) |
||||
{ |
||||
$formMapper |
||||
->add('id') |
||||
; |
||||
} |
||||
|
||||
// Fields to be shown on filter forms |
||||
protected function configureDatagridFilters(DatagridMapper $datagridMapper) |
||||
{ |
||||
$datagridMapper |
||||
->add('id') |
||||
; |
||||
} |
||||
|
||||
// Fields to be shown on lists |
||||
protected function configureListFields(ListMapper $listMapper) |
||||
{ |
||||
$listMapper |
||||
->addIdentifier('id') |
||||
; |
||||
} |
||||
} |
||||
@ -0,0 +1,51 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CoreBundle\Admin; |
||||
|
||||
use Chamilo\CoreBundle\Entity\Career; |
||||
use Sonata\AdminBundle\Admin\Admin; |
||||
use Sonata\AdminBundle\Form\FormMapper; |
||||
use Sonata\AdminBundle\Datagrid\DatagridMapper; |
||||
use Sonata\AdminBundle\Datagrid\ListMapper; |
||||
|
||||
/** |
||||
* Class CareerAdmin |
||||
* @package Chamilo\CoreBundle\Admin |
||||
*/ |
||||
class CareerAdmin extends Admin |
||||
{ |
||||
/** |
||||
* @param FormMapper $formMapper |
||||
*/ |
||||
protected function configureFormFields(FormMapper $formMapper) |
||||
{ |
||||
$formMapper |
||||
->add('name') |
||||
->add('description', 'ckeditor') |
||||
->add('status', 'choice', array('choices' => Career::getStatusList())) |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* @param DatagridMapper $datagridMapper |
||||
*/ |
||||
protected function configureDatagridFilters(DatagridMapper $datagridMapper) |
||||
{ |
||||
$datagridMapper |
||||
->add('name') |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* @param ListMapper $listMapper |
||||
*/ |
||||
protected function configureListFields(ListMapper $listMapper) |
||||
{ |
||||
$listMapper |
||||
->addIdentifier('id') |
||||
->addIdentifier('name') |
||||
; |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,51 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CoreBundle\Admin; |
||||
|
||||
use Chamilo\CoreBundle\Entity\Promotion; |
||||
use Sonata\AdminBundle\Admin\Admin; |
||||
use Sonata\AdminBundle\Form\FormMapper; |
||||
use Sonata\AdminBundle\Datagrid\DatagridMapper; |
||||
use Sonata\AdminBundle\Datagrid\ListMapper; |
||||
|
||||
/** |
||||
* Class PromotionAdmin |
||||
* @package Chamilo\CoreBundle\Admin |
||||
*/ |
||||
class PromotionAdmin extends Admin |
||||
{ |
||||
/** |
||||
* @param FormMapper $formMapper |
||||
*/ |
||||
protected function configureFormFields(FormMapper $formMapper) |
||||
{ |
||||
$formMapper |
||||
->add('name') |
||||
->add('description', 'ckeditor') |
||||
->add('status', 'choice', array('choices' => Promotion::getStatusList())) |
||||
->add('career') |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* @param DatagridMapper $datagridMapper |
||||
*/ |
||||
protected function configureDatagridFilters(DatagridMapper $datagridMapper) |
||||
{ |
||||
$datagridMapper |
||||
->add('name') |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* @param ListMapper $listMapper |
||||
*/ |
||||
protected function configureListFields(ListMapper $listMapper) |
||||
{ |
||||
$listMapper |
||||
->addIdentifier('id') |
||||
->addIdentifier('name') |
||||
; |
||||
} |
||||
} |
||||
@ -0,0 +1,112 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CoreBundle\Admin; |
||||
|
||||
use Chamilo\CoreBundle\Entity\Session; |
||||
use Sonata\AdminBundle\Admin\Admin; |
||||
use Sonata\AdminBundle\Form\FormMapper; |
||||
use Sonata\AdminBundle\Datagrid\DatagridMapper; |
||||
use Sonata\AdminBundle\Datagrid\ListMapper; |
||||
use Sonata\AdminBundle\Show\ShowMapper; |
||||
|
||||
/** |
||||
* Class SessionAdmin |
||||
* @package Chamilo\CoreBundle\Admin |
||||
*/ |
||||
class SessionAdmin extends Admin |
||||
{ |
||||
/** |
||||
* @param FormMapper $formMapper |
||||
*/ |
||||
protected function configureFormFields(FormMapper $formMapper) |
||||
{ |
||||
$formMapper |
||||
->add('name') //if no type is specified, SonataAdminBundle tries to guess it |
||||
->add('generalCoach') |
||||
->add('category') |
||||
->add('displayStartDate', 'sonata_type_datetime_picker') |
||||
->add( |
||||
'visibility', |
||||
'choice', |
||||
array('choices' => Session::getStatusList()) |
||||
) |
||||
->add('courses', 'sonata_type_collection', array( |
||||
'cascade_validation' => true, |
||||
), array( |
||||
'edit' => 'inline', |
||||
'inline' => 'table', |
||||
//'sortable' => 'position', |
||||
//'link_parameters' => array('context' => $context), |
||||
'admin_code' => 'sonata.admin.session_rel_course' |
||||
) |
||||
) |
||||
/*->add('users', 'sonata_type_collection', array( |
||||
'cascade_validation' => true, |
||||
), array( |
||||
'allow_delete' => true, |
||||
'by_reference' => false, |
||||
//'edit' => 'inline', |
||||
|
||||
//'sortable' => 'position', |
||||
//'link_parameters' => array('context' => $context), |
||||
//'admin_code' => 'sonata.admin.session_rel_user' |
||||
) |
||||
)*/ |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* @param ShowMapper $showMapper |
||||
*/ |
||||
protected function configureShowField(ShowMapper $showMapper) |
||||
{ |
||||
$showMapper |
||||
->add('id', 'text', array('label' => 'Session')) |
||||
->add('name') |
||||
->add('display_start_date', 'sonata_type_date_picker') |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* @param DatagridMapper $datagridMapper |
||||
*/ |
||||
protected function configureDatagridFilters(DatagridMapper $datagridMapper) |
||||
{ |
||||
$datagridMapper |
||||
->add('name') |
||||
->add( |
||||
'visibility', |
||||
null, |
||||
array(), |
||||
'choice', |
||||
array('choices' => Session::getStatusList()) |
||||
) |
||||
//->add('display_start_date', 'sonata_type_date_picker') |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* @param ListMapper $listMapper |
||||
*/ |
||||
protected function configureListFields(ListMapper $listMapper) |
||||
{ |
||||
$listMapper |
||||
->addIdentifier('name') |
||||
->add('generalCoach') |
||||
->add('visibility', 'choice', array( |
||||
'choices' => Session::getStatusList() |
||||
)) |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* Very important in order to save the related entities! |
||||
* @param \Chamilo\CoreBundle\Entity\Session $session |
||||
* @return mixed|void |
||||
*/ |
||||
public function preUpdate($session) |
||||
{ |
||||
$session->setCourses($session->getCourses()); |
||||
} |
||||
} |
||||
@ -0,0 +1,63 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CoreBundle\Admin; |
||||
|
||||
use Sonata\AdminBundle\Admin\Admin; |
||||
use Sonata\AdminBundle\Form\FormMapper; |
||||
use Sonata\AdminBundle\Datagrid\DatagridMapper; |
||||
use Sonata\AdminBundle\Datagrid\ListMapper; |
||||
use Sonata\AdminBundle\Show\ShowMapper; |
||||
|
||||
use Knp\Menu\ItemInterface as MenuItemInterface; |
||||
|
||||
/** |
||||
* Class CourseRequestAdmin |
||||
* @package Chamilo\CoreBundle\Admin |
||||
*/ |
||||
class SessionCategoryAdmin extends Admin |
||||
{ |
||||
/** |
||||
* @param FormMapper $formMapper |
||||
*/ |
||||
protected function configureFormFields(FormMapper $formMapper) |
||||
{ |
||||
$formMapper |
||||
->add('name') |
||||
->add('url') |
||||
->add('dateStart', 'sonata_type_datetime_picker') |
||||
->add('dateEnd', 'sonata_type_datetime_picker') |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* @param ShowMapper $showMapper |
||||
*/ |
||||
protected function configureShowField(ShowMapper $showMapper) |
||||
{ |
||||
$showMapper |
||||
->add('id') |
||||
->add('name') |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* @param DatagridMapper $datagridMapper |
||||
*/ |
||||
protected function configureDatagridFilters(DatagridMapper $datagridMapper) |
||||
{ |
||||
$datagridMapper |
||||
->add('name') |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* @param ListMapper $listMapper |
||||
*/ |
||||
protected function configureListFields(ListMapper $listMapper) |
||||
{ |
||||
$listMapper |
||||
->addIdentifier('name') |
||||
; |
||||
} |
||||
} |
||||
@ -0,0 +1,62 @@ |
||||
<?php |
||||
|
||||
namespace Chamilo\CoreBundle\Admin; |
||||
|
||||
use Sonata\AdminBundle\Admin\Admin; |
||||
use Sonata\AdminBundle\Form\FormMapper; |
||||
use Sonata\AdminBundle\Datagrid\DatagridMapper; |
||||
use Sonata\AdminBundle\Datagrid\ListMapper; |
||||
use Sonata\AdminBundle\Show\ShowMapper; |
||||
|
||||
use Chamilo\CoreBundle\Entity\CourseRelUser; |
||||
|
||||
use Knp\Menu\ItemInterface as MenuItemInterface; |
||||
|
||||
/** |
||||
* Class SessionRelCourseAdmin |
||||
* @package Chamilo\CoreBundle\Admin |
||||
*/ |
||||
class SessionRelCourseAdmin extends Admin |
||||
{ |
||||
/** |
||||
* @inheritdoc |
||||
*/ |
||||
protected function configureShowField(ShowMapper $showMapper) |
||||
{ |
||||
$showMapper |
||||
->add('id') |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* @inheritdoc |
||||
*/ |
||||
protected function configureFormFields(FormMapper $formMapper) |
||||
{ |
||||
$formMapper |
||||
->add('course') |
||||
//->add('session') |
||||
->end() |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* @inheritdoc |
||||
*/ |
||||
protected function configureDatagridFilters(DatagridMapper $datagridMapper) |
||||
{ |
||||
$datagridMapper |
||||
->add('id') |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* @inheritdoc |
||||
*/ |
||||
protected function configureListFields(ListMapper $listMapper) |
||||
{ |
||||
$listMapper |
||||
->addIdentifier('id') |
||||
; |
||||
} |
||||
} |
||||
@ -0,0 +1,70 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CoreBundle\Admin; |
||||
|
||||
use Sonata\AdminBundle\Admin\Admin; |
||||
use Sonata\AdminBundle\Form\FormMapper; |
||||
use Sonata\AdminBundle\Datagrid\DatagridMapper; |
||||
use Sonata\AdminBundle\Datagrid\ListMapper; |
||||
use Sonata\AdminBundle\Show\ShowMapper; |
||||
|
||||
use Knp\Menu\ItemInterface as MenuItemInterface; |
||||
|
||||
/** |
||||
* Class SessionAdmin |
||||
* @package Chamilo\CoreBundle\Admin |
||||
*/ |
||||
class SessionRelUserAdmin extends Admin |
||||
{ |
||||
/** |
||||
* @param FormMapper $formMapper |
||||
*/ |
||||
protected function configureFormFields(FormMapper $formMapper) |
||||
{ |
||||
$formMapper |
||||
->add('session') //if no type is specified, SonataAdminBundle tries to guess it |
||||
->add('user') |
||||
->add('relation_type', 'text') |
||||
; |
||||
|
||||
/*->add('student', 'sonata_type_model', array(), |
||||
array( |
||||
'admin_code' => 'application.subscriber.admin.student' |
||||
))*/ |
||||
} |
||||
|
||||
/** |
||||
* @param ShowMapper $showMapper |
||||
*/ |
||||
protected function configureShowField(ShowMapper $showMapper) |
||||
{ |
||||
$showMapper |
||||
->add('session') |
||||
->add('user') |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* @param DatagridMapper $datagridMapper |
||||
*/ |
||||
protected function configureDatagridFilters(DatagridMapper $datagridMapper) |
||||
{ |
||||
$datagridMapper |
||||
->add('session') |
||||
->add('user') |
||||
//->add('display_start_date', 'sonata_type_date_picker') |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* @param ListMapper $listMapper |
||||
*/ |
||||
protected function configureListFields(ListMapper $listMapper) |
||||
{ |
||||
$listMapper |
||||
->addIdentifier('session') |
||||
->addIdentifier('user') |
||||
; |
||||
} |
||||
} |
||||
@ -0,0 +1,63 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CoreBundle\Admin; |
||||
|
||||
use Chamilo\CourseBundle\Entity\CTool; |
||||
use Chamilo\CoreBundle\Entity\Course; |
||||
use Sonata\AdminBundle\Admin\Admin; |
||||
use Sonata\AdminBundle\Form\FormMapper; |
||||
use Sonata\AdminBundle\Datagrid\DatagridMapper; |
||||
use Sonata\AdminBundle\Datagrid\ListMapper; |
||||
use Sonata\AdminBundle\Show\ShowMapper; |
||||
|
||||
use Knp\Menu\ItemInterface as MenuItemInterface; |
||||
|
||||
/** |
||||
* Class SettingsCurrentAdmin |
||||
* @package Chamilo\CoreBundle\Admin |
||||
*/ |
||||
class SettingsCurrentAdmin extends Admin |
||||
{ |
||||
/** |
||||
* @param FormMapper $formMapper |
||||
*/ |
||||
protected function configureFormFields(FormMapper $formMapper) |
||||
{ |
||||
$formMapper |
||||
->add('title') |
||||
->add('variable') |
||||
->add('subkey') |
||||
->add('type') |
||||
->add('category') |
||||
->add('selectedValue') |
||||
->add('comment', 'ckeditor') |
||||
->add('accessUrl') |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* @param DatagridMapper $datagridMapper |
||||
*/ |
||||
protected function configureDatagridFilters(DatagridMapper $datagridMapper) |
||||
{ |
||||
$datagridMapper |
||||
->add('title') |
||||
->add('variable') |
||||
->add('category') |
||||
->add('accessUrl') |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* @param ListMapper $listMapper |
||||
*/ |
||||
protected function configureListFields(ListMapper $listMapper) |
||||
{ |
||||
$listMapper |
||||
->addIdentifier('variable') |
||||
->add('selected_value') |
||||
->add('category') |
||||
; |
||||
} |
||||
} |
||||
@ -0,0 +1,65 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CoreBundle\Admin; |
||||
|
||||
use Sonata\AdminBundle\Admin\Admin; |
||||
use Sonata\AdminBundle\Form\FormMapper; |
||||
use Sonata\AdminBundle\Datagrid\DatagridMapper; |
||||
use Sonata\AdminBundle\Datagrid\ListMapper; |
||||
|
||||
/** |
||||
* Class ToolAdmin |
||||
* @package Chamilo\CoreBundle\Admin |
||||
*/ |
||||
class ToolAdmin extends Admin |
||||
{ |
||||
/** |
||||
* @inheritdoc |
||||
*/ |
||||
protected function configureFormFields(FormMapper $formMapper) |
||||
{ |
||||
$formMapper |
||||
->add('name') |
||||
->add('description', 'ckeditor') |
||||
->add('toolResourceRights', 'sonata_type_collection', array( |
||||
'cascade_validation' => true, |
||||
), array( |
||||
//'allow_delete' => true, |
||||
//'by_reference' => false, |
||||
'edit' => 'inline', |
||||
'inline' => 'table', |
||||
//'btn_add' => true, |
||||
//'multiple' => true |
||||
//'sortable' => 'position', |
||||
//'link_parameters' => array('content' => $users), |
||||
'admin_code' => 'sonata.admin.tool_resource_rights' |
||||
) |
||||
) |
||||
/*->add('image', 'sonata_media_type', array( |
||||
'provider' => 'sonata.media.provider.image', |
||||
'context' => 'default' |
||||
));*/ |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* @inheritdoc |
||||
*/ |
||||
protected function configureDatagridFilters(DatagridMapper $datagridMapper) |
||||
{ |
||||
$datagridMapper |
||||
->add('name') |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* @inheritdoc |
||||
*/ |
||||
protected function configureListFields(ListMapper $listMapper) |
||||
{ |
||||
$listMapper |
||||
->addIdentifier('name') |
||||
; |
||||
} |
||||
} |
||||
@ -0,0 +1,60 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CoreBundle\Admin; |
||||
|
||||
use Chamilo\CoreBundle\Entity\ToolResourceRights; |
||||
use Sonata\AdminBundle\Admin\Admin; |
||||
use Sonata\AdminBundle\Form\FormMapper; |
||||
use Sonata\AdminBundle\Datagrid\DatagridMapper; |
||||
use Sonata\AdminBundle\Datagrid\ListMapper; |
||||
use Sonata\AdminBundle\Show\ShowMapper; |
||||
|
||||
/** |
||||
* Class ToolResourceRightsAdmin |
||||
* @package Chamilo\CoreBundle\Admin |
||||
*/ |
||||
class ToolResourceRightsAdmin extends Admin |
||||
{ |
||||
/** |
||||
* @inheritdoc |
||||
*/ |
||||
protected function configureFormFields(FormMapper $formMapper) |
||||
{ |
||||
$formMapper |
||||
->add('tool') |
||||
->add( |
||||
'role', |
||||
'choice', |
||||
array('choices' => ToolResourceRights::getDefaultRoles()) |
||||
) |
||||
->add( |
||||
'mask', |
||||
'choice', |
||||
array('choices' => ToolResourceRights::getMaskList()) |
||||
) |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* @inheritdoc |
||||
*/ |
||||
protected function configureDatagridFilters(DatagridMapper $datagridMapper) |
||||
{ |
||||
$datagridMapper |
||||
->add('role') |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* @inheritdoc |
||||
*/ |
||||
protected function configureListFields(ListMapper $listMapper) |
||||
{ |
||||
$listMapper |
||||
->addIdentifier('id') |
||||
->addIdentifier('role') |
||||
->addIdentifier('mask') |
||||
; |
||||
} |
||||
} |
||||
@ -0,0 +1,87 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CoreBundle\Admin; |
||||
|
||||
use Sonata\AdminBundle\Admin\Admin; |
||||
use Sonata\AdminBundle\Form\FormMapper; |
||||
use Sonata\AdminBundle\Datagrid\DatagridMapper; |
||||
use Sonata\AdminBundle\Datagrid\ListMapper; |
||||
use Sonata\AdminBundle\Show\ShowMapper; |
||||
|
||||
use Knp\Menu\ItemInterface as MenuItemInterface; |
||||
|
||||
/** |
||||
* Class UserGroupAdmin |
||||
* @package Chamilo\CoreBundle\Admin |
||||
*/ |
||||
class UserGroupAdmin extends Admin |
||||
{ |
||||
/** |
||||
* @param FormMapper $formMapper |
||||
*/ |
||||
protected function configureFormFields(FormMapper $formMapper) |
||||
{ |
||||
$formMapper |
||||
->add('name') |
||||
->add('description', 'ckeditor') |
||||
->add('users', 'sonata_type_collection', array( |
||||
'cascade_validation' => true, |
||||
), array( |
||||
// 'allow_delete' => true, |
||||
'by_reference' => false, |
||||
'edit' => 'inline', |
||||
'inline' => 'table', |
||||
//'btn_add' => true, |
||||
//'multiple' => true |
||||
//'sortable' => 'position', |
||||
//'link_parameters' => array('content' => $users), |
||||
'admin_code' => 'sonata.admin.user_group_rel_user' |
||||
) |
||||
) |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* Very important in order to save the related entities! |
||||
* @param \Chamilo\CoreBundle\Entity\Course $userGroup |
||||
* @return mixed|void |
||||
*/ |
||||
public function preUpdate($userGroup) |
||||
{ |
||||
//$userGroup->setUsers($userGroup->getUsers()); |
||||
} |
||||
|
||||
/** |
||||
* @param ShowMapper $showMapper |
||||
*/ |
||||
protected function configureShowField(ShowMapper $showMapper) |
||||
{ |
||||
$showMapper |
||||
->add('id', 'text', array('label' => 'Usergroup')) |
||||
->add('name') |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* @param DatagridMapper $datagridMapper |
||||
*/ |
||||
protected function configureDatagridFilters(DatagridMapper $datagridMapper) |
||||
{ |
||||
$datagridMapper |
||||
->add('id') |
||||
->add('name') |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* @param ListMapper $listMapper |
||||
*/ |
||||
protected function configureListFields(ListMapper $listMapper) |
||||
{ |
||||
$listMapper |
||||
->addIdentifier('id') |
||||
->addIdentifier('name') |
||||
; |
||||
} |
||||
} |
||||
@ -0,0 +1,63 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CoreBundle\Admin; |
||||
|
||||
use Sonata\AdminBundle\Admin\Admin; |
||||
use Sonata\AdminBundle\Form\FormMapper; |
||||
use Sonata\AdminBundle\Datagrid\DatagridMapper; |
||||
use Sonata\AdminBundle\Datagrid\ListMapper; |
||||
use Sonata\AdminBundle\Show\ShowMapper; |
||||
|
||||
use Knp\Menu\ItemInterface as MenuItemInterface; |
||||
|
||||
/** |
||||
* Class UsergroupRelUser |
||||
* @package Chamilo\CoreBundle\Admin |
||||
*/ |
||||
class UsergroupRelUser extends Admin |
||||
{ |
||||
/** |
||||
* @param FormMapper $formMapper |
||||
*/ |
||||
protected function configureFormFields(FormMapper $formMapper) |
||||
{ |
||||
$formMapper |
||||
->add('user') |
||||
->add('usergroup') |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* @param ShowMapper $showMapper |
||||
*/ |
||||
protected function configureShowField(ShowMapper $showMapper) |
||||
{ |
||||
$showMapper |
||||
->add('user') |
||||
->add('usergroup') |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* @param DatagridMapper $datagridMapper |
||||
*/ |
||||
protected function configureDatagridFilters(DatagridMapper $datagridMapper) |
||||
{ |
||||
$datagridMapper |
||||
->add('user') |
||||
->add('usergroup') |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* @param ListMapper $listMapper |
||||
*/ |
||||
protected function configureListFields(ListMapper $listMapper) |
||||
{ |
||||
$listMapper |
||||
->addIdentifier('user') |
||||
->addIdentifier('usergroup') |
||||
; |
||||
} |
||||
} |
||||
@ -0,0 +1,27 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CoreBundle; |
||||
|
||||
use Chamilo\CoreBundle\DependencyInjection\Compiler\DoctrineEntityListenerPass; |
||||
use Symfony\Component\HttpKernel\Bundle\Bundle; |
||||
use Symfony\Component\DependencyInjection\ContainerBuilder; |
||||
|
||||
/** |
||||
* Class ChamiloCoreBundle |
||||
* @package Chamilo\CoreBundle |
||||
*/ |
||||
class ChamiloCoreBundle extends Bundle |
||||
{ |
||||
public function boot() |
||||
{ |
||||
// Add legacy calls. |
||||
} |
||||
|
||||
public function build(ContainerBuilder $container) |
||||
{ |
||||
parent::build($container); |
||||
//$container->addCompilerPass(new EntityListenerPass()); |
||||
//$container->addCompilerPass(new DoctrineEntityListenerPass()); |
||||
} |
||||
} |
||||
@ -0,0 +1,40 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CoreBundle\DependencyInjection; |
||||
|
||||
use Symfony\Component\DependencyInjection\ContainerBuilder; |
||||
use Symfony\Component\HttpKernel\DependencyInjection\Extension; |
||||
use Symfony\Component\Config\FileLocator; |
||||
use Symfony\Component\DependencyInjection\Loader; |
||||
|
||||
/** |
||||
* Class ChamiloCoreExtension |
||||
* @package Chamilo\CoreBundle\DependencyInjection |
||||
*/ |
||||
class ChamiloCoreExtension extends Extension |
||||
{ |
||||
/** |
||||
* @param array $configs |
||||
* @param ContainerBuilder $container |
||||
*/ |
||||
public function load(array $configs, ContainerBuilder $container) |
||||
{ |
||||
$loader = new Loader\YamlFileLoader( |
||||
$container, |
||||
new FileLocator(__DIR__ . '/../Resources/config') |
||||
); |
||||
|
||||
$loader->load('services.yml'); |
||||
$loader->load('admin.yml'); |
||||
} |
||||
|
||||
/** |
||||
* @return string |
||||
*/ |
||||
public function getAlias() |
||||
{ |
||||
return 'chamilo_core'; |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,27 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CoreBundle\DependencyInjection\Compiler; |
||||
|
||||
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; |
||||
use Symfony\Component\DependencyInjection\ContainerBuilder; |
||||
|
||||
/** |
||||
* Class DoctrineEntityListenerPass |
||||
* @package Chamilo\CoreBundle\DependencyInjection\Compiler |
||||
*/ |
||||
class DoctrineEntityListenerPass implements CompilerPassInterface |
||||
{ |
||||
public function process(ContainerBuilder $container) |
||||
{ |
||||
$definition = $container->getDefinition('chamilo.doctrine.entity_listener_resolver'); |
||||
$services = $container->findTaggedServiceIds('doctrine.entity_listener'); |
||||
|
||||
foreach ($services as $service => $attributes) { |
||||
$definition->addMethodCall( |
||||
'addMapping', |
||||
array($container->getDefinition($service)->getClass(), $service) |
||||
); |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,22 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CoreBundle\Entity\Manager; |
||||
|
||||
use Sonata\CoreBundle\Model\BaseEntityManager; |
||||
use Chamilo\CoreBundle\Entity\Course; |
||||
|
||||
/** |
||||
* Class AccessUrlManager |
||||
* @package Chamilo\CoreBundle\Entity\Manager |
||||
*/ |
||||
class AccessUrlManager extends BaseEntityManager |
||||
{ |
||||
/** |
||||
* @return Course |
||||
*/ |
||||
public function createUrl() |
||||
{ |
||||
return $this->create(); |
||||
} |
||||
} |
||||
@ -0,0 +1,161 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CoreBundle\Entity\Manager; |
||||
|
||||
use Chamilo\CoreBundle\Entity\Repository\CourseRepository; |
||||
use Chamilo\CoreBundle\Entity\Session; |
||||
use Chamilo\CoreBundle\Entity\SessionRelUser; |
||||
use Sonata\CoreBundle\Model\BaseEntityManager; |
||||
use Chamilo\CoreBundle\Entity\Course; |
||||
use Chamilo\UserBundle\Entity\User; |
||||
use Sonata\DatagridBundle\Pager\Doctrine\pager; |
||||
use Sonata\DatagridBundle\ProxyQuery\Doctrine\ProxyQuery; |
||||
use Doctrine\Common\Collections\Criteria; |
||||
|
||||
/** |
||||
* Class SessionManager |
||||
* @package Chamilo\CoreBundle\Entity\Manager |
||||
*/ |
||||
class SessionManager extends BaseEntityManager |
||||
{ |
||||
/** |
||||
* @return Session |
||||
*/ |
||||
public function createSession() |
||||
{ |
||||
return $this->create(); |
||||
} |
||||
|
||||
/** |
||||
* @param $name |
||||
* @return Session |
||||
*/ |
||||
public function findOneByName($name) |
||||
{ |
||||
return $this->getRepository()->findOneByName($name); |
||||
} |
||||
|
||||
/** |
||||
* @param User $user |
||||
* @param Session $session |
||||
*/ |
||||
public function addDrh(User $user, Session $session) |
||||
{ |
||||
$session->addUserInSession(Session::COACH, $user); |
||||
} |
||||
|
||||
/** |
||||
* @param User $user |
||||
* @param Session $session |
||||
* @return bool |
||||
*/ |
||||
public function hasDrh(User $user, Session $session) |
||||
{ |
||||
$subscription = new SessionRelUser(); |
||||
$subscription->setUser($user); |
||||
$subscription->setSession($session); |
||||
$subscription->setRelationType(Session::DRH); |
||||
|
||||
return $session->hasUser($subscription); |
||||
} |
||||
|
||||
/** |
||||
* @param User $user |
||||
* @param Course $course |
||||
* @param Session $session |
||||
*/ |
||||
public function addStudentInCourse( |
||||
User $user, |
||||
Course $course, |
||||
Session $session |
||||
) { |
||||
$this->addUserInCourse(Session::STUDENT, $user, $course, $session); |
||||
} |
||||
|
||||
/** |
||||
* @param User $user |
||||
* @param Course $course |
||||
* @param Session $session |
||||
* @return bool |
||||
*/ |
||||
public function hasStudentInCourse( |
||||
User $user, |
||||
Course $course, |
||||
Session $session |
||||
) { |
||||
return $session->hasUserInCourse($user, $course, Session::STUDENT); |
||||
} |
||||
|
||||
/** |
||||
* @param User $user |
||||
* @param Course $course |
||||
* @param Session $session |
||||
*/ |
||||
public function addCoachInCourse( |
||||
User $user, |
||||
Course $course, |
||||
Session $session |
||||
) { |
||||
$this->addUserInCourse(Session::COACH, $user, $course, $session); |
||||
} |
||||
|
||||
/** |
||||
* @param User $user |
||||
* @param Course $course |
||||
* @param Session $session |
||||
* @return bool |
||||
*/ |
||||
public function hasCoachInCourse( |
||||
User $user, |
||||
Course $course, |
||||
Session $session |
||||
) { |
||||
return $session->hasUserInCourse($user, $course, Session::COACH); |
||||
} |
||||
|
||||
/** |
||||
* @param $status |
||||
* @param User $user |
||||
* @param Course $course |
||||
* @param Session $session |
||||
*/ |
||||
private function addUserInCourse( |
||||
$status, |
||||
User $user, |
||||
Course $course, |
||||
Session $session |
||||
) { |
||||
if ($session->isActive() && |
||||
$user->getIsActive() && |
||||
$course->isActive() |
||||
) { |
||||
if ($session->hasCourse($course)) { |
||||
switch ($status) { |
||||
case Session::DRH: |
||||
if ($user->hasRole('ROLE_RRHH')) { |
||||
$session->addUserInSession(Session::DRH, $user); |
||||
} |
||||
break; |
||||
case Session::STUDENT: |
||||
$session->addUserInSession(Session::STUDENT, $user); |
||||
$session->addUserInCourse( |
||||
Session::STUDENT, |
||||
$user, |
||||
$course |
||||
); |
||||
break; |
||||
case Session::COACH: |
||||
if ($user->hasRole('ROLE_TEACHER')) { |
||||
$session->addUserInCourse( |
||||
Session::COACH, |
||||
$user, |
||||
$course |
||||
); |
||||
} |
||||
break; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,143 @@ |
||||
services: |
||||
sonata.admin.session: |
||||
class: Chamilo\CoreBundle\Admin\SessionAdmin |
||||
tags: |
||||
- { name: sonata.admin, manager_type: orm, audit: true, group: "LMS", label: "Session" } |
||||
arguments: |
||||
- ~ |
||||
- Chamilo\CoreBundle\Entity\Session |
||||
- ~ |
||||
calls: |
||||
- [ setTranslationDomain, [ChamiloCoreBundle]] |
||||
|
||||
sonata.admin.session_category: |
||||
class: Chamilo\CoreBundle\Admin\SessionCategoryAdmin |
||||
tags: |
||||
- { name: sonata.admin, manager_type: orm, group: "LMS", label: "Session category" } |
||||
arguments: |
||||
- ~ |
||||
- Chamilo\CoreBundle\Entity\SessionCategory |
||||
- ~ |
||||
calls: |
||||
- [ setTranslationDomain, [ChamiloCoreBundle]] |
||||
|
||||
sonata.admin.career: |
||||
class: Chamilo\CoreBundle\Admin\CareerAdmin |
||||
tags: |
||||
- { name: sonata.admin, manager_type: orm, group: "LMS", label: "Career" } |
||||
arguments: |
||||
- ~ |
||||
- Chamilo\CoreBundle\Entity\Career |
||||
- ~ |
||||
calls: |
||||
- [ setTranslationDomain, [ChamiloCoreBundle]] |
||||
|
||||
sonata.admin.promotion: |
||||
class: Chamilo\CoreBundle\Admin\PromotionAdmin |
||||
tags: |
||||
- { name: sonata.admin, manager_type: orm, group: "LMS", label: "Promotion" } |
||||
arguments: |
||||
- ~ |
||||
- Chamilo\CoreBundle\Entity\Promotion |
||||
- ~ |
||||
calls: |
||||
- [ setTranslationDomain, [ChamiloCoreBundle]] |
||||
|
||||
sonata.admin.session_rel_course: |
||||
class: Chamilo\CoreBundle\Admin\SessionRelCourseAdmin |
||||
tags: |
||||
- { name: sonata.admin, manager_type: orm, group: "LMS", label: "SessionRelCourseAdmin" } |
||||
arguments: |
||||
- ~ |
||||
- Chamilo\CoreBundle\Entity\SessionRelCourse |
||||
- ~ |
||||
calls: |
||||
- [ setTranslationDomain, [ChamiloCoreBundle]] |
||||
|
||||
sonata.admin.session_rel_user: |
||||
class: Chamilo\CoreBundle\Admin\SessionRelUserAdmin |
||||
tags: |
||||
- { name: sonata.admin, manager_type: orm, group: "LMS", label: "SessionRelUserAdmin" } |
||||
arguments: |
||||
- ~ |
||||
- Chamilo\CoreBundle\Entity\SessionRelUser |
||||
- ~ |
||||
calls: |
||||
- [ setTranslationDomain, [ChamiloCoreBundle]] |
||||
|
||||
sonata.admin.access_url: |
||||
class: Chamilo\CoreBundle\Admin\AccessUrlAdmin |
||||
tags: |
||||
- { name: sonata.admin, manager_type: orm, group: "LMS", label: "AccessUrlAdmin" } |
||||
arguments: |
||||
- ~ |
||||
- Chamilo\CoreBundle\Entity\AccessUrl |
||||
- ~ |
||||
calls: |
||||
- [ setTranslationDomain, [ChamiloCoreBundle]] |
||||
|
||||
sonata.admin.access_url_rel_course: |
||||
class: Chamilo\CoreBundle\Admin\AccessUrlRelCourseAdmin |
||||
tags: |
||||
- { name: sonata.admin, manager_type: orm, group: "LMS", label: "AccessUrlRelCourseAdmin" } |
||||
arguments: |
||||
- ~ |
||||
- Chamilo\CoreBundle\Entity\AccessUrlRelCourse |
||||
- ~ |
||||
calls: |
||||
- [ setTranslationDomain, [ChamiloCoreBundle]] |
||||
|
||||
sonata.admin.settings_current: |
||||
class: Chamilo\CoreBundle\Admin\SettingsCurrentAdmin |
||||
tags: |
||||
- { name: sonata.admin, manager_type: orm, group: "LMS", label: "Settings" } |
||||
arguments: |
||||
- ~ |
||||
- Chamilo\CoreBundle\Entity\SettingsCurrent |
||||
- ~ |
||||
calls: |
||||
- [ setTranslationDomain, [ChamiloCoreBundle]] |
||||
|
||||
sonata.admin.user_group: |
||||
class: Chamilo\CoreBundle\Admin\UserGroupAdmin |
||||
tags: |
||||
- { name: sonata.admin, manager_type: orm, group: "LMS", label: "UserGroupAdmin" } |
||||
arguments: |
||||
- ~ |
||||
- Chamilo\CoreBundle\Entity\UserGroup |
||||
- ~ |
||||
calls: |
||||
- [ setTranslationDomain, [ChamiloCoreBundle]] |
||||
|
||||
sonata.admin.user_group_rel_user: |
||||
class: Chamilo\CoreBundle\Admin\UsergroupRelUser |
||||
tags: |
||||
- { name: sonata.admin, manager_type: orm, group: "LMS", label: "UsergroupRelUser" } |
||||
arguments: |
||||
- ~ |
||||
- Chamilo\CoreBundle\Entity\UsergroupRelUser |
||||
- ~ |
||||
calls: |
||||
- [ setTranslationDomain, [ChamiloCoreBundle]] |
||||
|
||||
sonata.admin.tool: |
||||
class: Chamilo\CoreBundle\Admin\ToolAdmin |
||||
tags: |
||||
- { name: sonata.admin, manager_type: orm, group: "LMS", label: "Tool" } |
||||
arguments: |
||||
- ~ |
||||
- Chamilo\CoreBundle\Entity\Tool |
||||
- ~ |
||||
calls: |
||||
- [ setTranslationDomain, [ChamiloCoreBundle]] |
||||
|
||||
sonata.admin.tool_resource_rights: |
||||
class: Chamilo\CoreBundle\Admin\ToolResourceRightsAdmin |
||||
tags: |
||||
- { name: sonata.admin, manager_type: orm, group: "LMS", label: "ToolResourceRights" } |
||||
arguments: |
||||
- ~ |
||||
- Chamilo\CoreBundle\Entity\ToolResourceRights |
||||
- ~ |
||||
calls: |
||||
- [ setTranslationDomain, [ChamiloCoreBundle]] |
||||
@ -0,0 +1,113 @@ |
||||
index: |
||||
resource: '@ChamiloCoreBundle/Controller/IndexController.php' |
||||
type: annotation |
||||
|
||||
userportal: |
||||
resource: '@ChamiloCoreBundle/Controller/UserPortalController.php' |
||||
type: annotation |
||||
prefix: /userportal |
||||
|
||||
front: |
||||
resource: '@ChamiloCoreBundle/Controller/FrontController.php' |
||||
type: annotation |
||||
prefix: /front |
||||
|
||||
user: |
||||
resource: '@ChamiloCoreBundle/Controller/User/UserController.php' |
||||
type: annotation |
||||
prefix: /user |
||||
|
||||
course: |
||||
resource: '@ChamiloCoreBundle/Controller/CourseController.php' |
||||
type: annotation |
||||
prefix: /course |
||||
|
||||
legacy_javascript: |
||||
resource: '@ChamiloCoreBundle/Controller/JavascriptLegacyController.php' |
||||
type: annotation |
||||
prefix: /js |
||||
|
||||
# Legacy routes |
||||
main: |
||||
path: /main/{name} |
||||
defaults: { _controller: ChamiloCoreBundle:Legacy:classic } |
||||
requirements: |
||||
name: .+ |
||||
|
||||
# web url shortcuts for legacy templates |
||||
web.ajax: |
||||
path: main/inc/ajax/ |
||||
|
||||
web.main: |
||||
path: main/ |
||||
|
||||
web.img: |
||||
path: bundles/chamilocore/img/ |
||||
|
||||
# Core controllers |
||||
core_admin: |
||||
resource: '@ChamiloCoreBundle/Controller/Admin' |
||||
type: annotation |
||||
prefix: /admin |
||||
|
||||
course_url: |
||||
path: courses |
||||
|
||||
core_tool: |
||||
resource: '@ChamiloCourseBundle/Controller' |
||||
type: annotation |
||||
prefix: /courses/{course}/ |
||||
|
||||
core_tool_document: |
||||
pattern: /courses/{course}/document/{file} |
||||
defaults: |
||||
_controller: ChamiloCoreBundle:Resource:getDocument |
||||
requirements: |
||||
file: .+ # allow "/" in {file} |
||||
|
||||
#chamilo_course_tool_intro_create: |
||||
# path: /courses/{course}/introduction/{tool}/create/ |
||||
# methods: [GET, POST] |
||||
# defaults: |
||||
# _controller: ChamiloCourseBundle:Introduction/Introduction:create |
||||
# _sylius: |
||||
# template: ChamiloCourseBundle:CToolIntro:create2.html.twig |
||||
# form: Chamilo\CourseBundle\Form\Type\CToolIntroType |
||||
# |
||||
# |
||||
# requirements: |
||||
# tool: "[a-zA-Z_]+" |
||||
|
||||
#chamilo_course_tool_intro_update: |
||||
# path: /courses/{course}/introduction/{tool}/update/ |
||||
# methods: [GET] |
||||
# defaults: |
||||
# _controller: chamilo_course.controller.c_tool_intro:updateAction |
||||
# |
||||
#chamilo_course_tool_list: |
||||
# path: /courses/{course}/introduction |
||||
# methods: [GET] |
||||
# defaults: |
||||
# _controller: chamilo_course.controller.tool:indexAction |
||||
|
||||
# Redirects /url/ to /url |
||||
remove_trailing_slash: |
||||
path: /{url} |
||||
defaults: { _controller: ChamiloCoreBundle:Redirecting:removeTrailingSlash } |
||||
requirements: |
||||
url: .*/$ |
||||
_method: GET |
||||
|
||||
|
||||
## Course settings |
||||
#chamilo_course_settings: |
||||
# pattern: /courses/{course}/settings/{namespace} |
||||
# defaults: |
||||
# _controller: ChamiloCourseBundle:Settings:update |
||||
# template: ChamiloCourseBundle:Settings:default.html.twig |
||||
## |
||||
#chamilo_course_tool_index: |
||||
# pattern: /courses/{course}/tools |
||||
# methods: [GET, POST, HEAD, DELETE] |
||||
# defaults: |
||||
# _controller: chamilo_course.controller.tool:indexAction |
||||
@ -0,0 +1,230 @@ |
||||
parameters: |
||||
chamilo_core.entity.manager.course_manager.class: Chamilo\CoreBundle\Entity\Manager\CourseManager |
||||
chamilo_core.entity.course: Chamilo\CoreBundle\Entity\Course |
||||
|
||||
chamilo_core.entity.manager.session_manager.class: Chamilo\CoreBundle\Entity\Manager\SessionManager |
||||
chamilo_core.entity.session: Chamilo\CoreBundle\Entity\Session |
||||
|
||||
chamilo_core.entity.manager.access_url_manager.class: Chamilo\CoreBundle\Entity\Manager\AccessUrlManager |
||||
chamilo_core.entity.access_url: Chamilo\CoreBundle\Entity\AccessUrl |
||||
|
||||
services: |
||||
# Managers |
||||
chamilo_core.entity.manager.course_manager: |
||||
class: %chamilo_core.entity.manager.course_manager.class% |
||||
arguments: [%chamilo_core.entity.course%, @doctrine] |
||||
|
||||
chamilo_core.entity.manager.session_manager: |
||||
class: %chamilo_core.entity.manager.session_manager.class% |
||||
arguments: [%chamilo_core.entity.session%, @doctrine] |
||||
|
||||
chamilo_core.manager.access_url: |
||||
class: %chamilo_core.entity.manager.access_url_manager.class% |
||||
arguments: [%chamilo_core.entity.access_url%, @doctrine] |
||||
|
||||
# Chamilo Twig extension |
||||
twig.extension.chamilo_extension: |
||||
class: Chamilo\CoreBundle\Twig\Extension\ChamiloExtension |
||||
tags: |
||||
- { name: twig.extension } |
||||
|
||||
# Security |
||||
|
||||
# Chamilo custom password encoder |
||||
chamilo_user.security.encoder: |
||||
class: Chamilo\UserBundle\Security\Encoder |
||||
arguments: ['%password_encryption%'] |
||||
# |
||||
# # Course voter checks if a user has permissions to do actions in a course |
||||
# chamilo_core.security.authorization.voter.course_voter: |
||||
# class: Chamilo\CoreBundle\Security\Authorization\Voter\CourseVoter |
||||
# arguments: [ @doctrine.orm.entity_manager, @chamilo_core.entity.manager.course_manager, @service_container] |
||||
# public: false |
||||
# tags: |
||||
# - { name: security.voter } |
||||
# |
||||
# # Session voter, checks if a user has permissions to do actions in a session |
||||
# chamilo_core.security.authorization.voter.session_voter: |
||||
# class: Chamilo\CoreBundle\Security\Authorization\Voter\SessionVoter |
||||
# arguments: [ @doctrine.orm.entity_manager, @chamilo_core.entity.manager.course_manager, @service_container] |
||||
# public: false |
||||
# tags: |
||||
# - { name: security.voter } |
||||
# |
||||
# # Resource node voter, checks if a user has permissions to do actions |
||||
# chamilo_core.security.authorization.voter.resource_node_voter: |
||||
# class: Chamilo\CoreBundle\Security\Authorization\Voter\ResourceNodeVoter |
||||
# public: false |
||||
# arguments: [ @service_container ] |
||||
# tags: |
||||
# - { name: security.voter } |
||||
|
||||
# User image naming |
||||
# chamilo_core.naming.user_image: |
||||
# class: Chamilo\CoreBundle\Naming\UserImage |
||||
|
||||
# Form types |
||||
|
||||
# Custom yes/no type, use in the platform settings |
||||
chamilo_core.form.type.yes_no: |
||||
class: Chamilo\CoreBundle\Form\Type\YesNoType |
||||
tags: |
||||
- { name: form.type, alias: yes_no } |
||||
|
||||
# # Extra field attribute services |
||||
# chamilo_user.form.type.attribute_value_type: |
||||
# class: Chamilo\UserBundle\Form\Type\AttributeValueType |
||||
# arguments: [Chamilo\CoreBundle\Entity\ExtraFieldValues, ["registration"], "user", @sylius.repository.subject_name_attribute_value] |
||||
# tags: |
||||
# - { name: form.type, alias: chamilo_user_extra_field_value } |
||||
## |
||||
# |
||||
# chamilo_user.form.type.attribute_type: |
||||
# class: Chamilo\UserBundle\Form\Type\AttributeType |
||||
# arguments: [Chamilo\CoreBundle\Entity\ExtraField, ["registration"], "user"] |
||||
## arguments: [%sylius.attribute.attribute_types%] |
||||
# tags: |
||||
# - { name: form.type, alias: chamilo_user_attribute_type } |
||||
# |
||||
# chamilo_user.form.type.attribute_choice_type: |
||||
# class: Chamilo\UserBundle\Form\Type\AttributeTypeChoiceType |
||||
# arguments: [%sylius.attribute.attribute_types%] |
||||
# tags: |
||||
# - { name: form.type, alias: chamilo_user_attribute_choice } |
||||
|
||||
# html editor |
||||
chamilo_core.html_editor: |
||||
class: Chamilo\CoreBundle\Component\Editor\CkEditor\CkEditor |
||||
arguments: [@translator.default, @router] |
||||
|
||||
# Listeners |
||||
|
||||
# chamilo.doctrine.entity_listener_resolver: |
||||
# class: Chamilo\CoreBundle\Doctrine\EntityListenerResolver |
||||
# arguments: [ "@service_container" ] |
||||
|
||||
# Check if users are online |
||||
# chamilo_core.listener.online: |
||||
# class: Chamilo\CoreBundle\EventListener\OnlineListener |
||||
# arguments: [@security.context, @doctrine.orm.entity_manager ] |
||||
# tags: |
||||
# - { name: kernel.event_listener, event: kernel.controller, method: onCoreController } |
||||
|
||||
# When Course entity is loaded |
||||
# chamilo_core.listener.course: |
||||
# class: Chamilo\CoreBundle\Entity\Listener\CourseListener |
||||
# arguments: [ "@chamilo_course.tool_chain" ] |
||||
# tags: |
||||
# - { name: doctrine.orm.entity_listener } |
||||
|
||||
# When Session entity is loaded |
||||
# chamilo_core.listener.session: |
||||
# class: Chamilo\CoreBundle\Entity\Listener\SessionListener |
||||
# tags: |
||||
# - { name: doctrine.orm.entity_listener } |
||||
# |
||||
# # Setting legacy variables |
||||
# chamilo_core.listener.legacy: |
||||
# class: Chamilo\CoreBundle\EventListener\LegacyListener |
||||
# arguments: [@service_container] |
||||
# tags: |
||||
# - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest, priority: 100 } |
||||
# - { name: kernel.event_listener, event: kernel.response, method: onKernelResponse } |
||||
# - { name: kernel.event_listener, event: kernel.controller, method: onKernelController } |
||||
|
||||
# Setting locale |
||||
# chamilo_core.listener.locale: |
||||
# class: Chamilo\CoreBundle\EventListener\LocaleListener |
||||
# arguments: ["%kernel.default_locale%", "@service_container"] |
||||
# tags: |
||||
# - { name: kernel.event_subscriber } |
||||
|
||||
# Setting user and platform locale |
||||
# chamilo_core.listener.user_locale_listener: |
||||
# class: Chamilo\CoreBundle\EventListener\UserLocaleListener |
||||
# arguments: ["@session", "@chamilo.settings.manager"] |
||||
# tags: |
||||
# - { name: kernel.event_listener, event: security.interactive_login, method: onInteractiveLogin } |
||||
## - { name: kernel.event_listener, event: kernel.request, method: setLocaleForUnauthenticatedUser} |
||||
# |
||||
# # Settings listener |
||||
# chamilo_core.listener.settings: |
||||
# class: Chamilo\CoreBundle\EventListener\SettingListener |
||||
# arguments: [@service_container] |
||||
# tags: |
||||
# - { name: kernel.event_listener, event: sylius.settings.pre_save, method: onSettingPreSave } |
||||
# |
||||
# # Menu |
||||
# chamilo_core.listener.navbar_menu_listener: |
||||
# class: Chamilo\CoreBundle\EventListener\MenuListener |
||||
# arguments: [@service_container] |
||||
# tags: |
||||
# - { name: kernel.event_listener, event: theme.sidebar_setup_menu_knp, method: onSetupMenu } |
||||
# - { name: kernel.event_listener, event: theme.breadcrumb, method: onSetupMenu } |
||||
# |
||||
# # Show the user information in the topbar |
||||
# chamilo_core.listener.navbar_user_listener: |
||||
# class: Chamilo\CoreBundle\EventListener\ShowUserListener |
||||
# arguments: [@service_container] |
||||
# tags: |
||||
# - { name: kernel.event_listener, event: theme.navbar_user, method: onShowUser } |
||||
# - { name: kernel.event_listener, event: theme.sidebar_user, method: onShowUser } |
||||
# |
||||
# # Loads the message notifications in the top bar |
||||
# chamilo_core.listener.message_listener: |
||||
# class: Chamilo\CoreBundle\EventListener\MessageListener |
||||
# arguments: [@service_container] |
||||
# tags: |
||||
# - { name: kernel.event_listener, event: theme.messages, method: onListMessages } |
||||
# |
||||
# # Login listener - When user logs in |
||||
# chamilo_core.listener.login_success_handler: |
||||
# class: Chamilo\CoreBundle\EventListener\LoginSuccessHandler |
||||
# arguments: [@router, @security.authorization_checker] |
||||
# |
||||
# # Logout listener - When user logs out |
||||
# chamilo_core.listener.logout_success_handler: |
||||
# class: Chamilo\CoreBundle\EventListener\LogoutSuccessHandler |
||||
# arguments: [@router, @security.authorization_checker, @security.token_storage] |
||||
# |
||||
# # Menus |
||||
# |
||||
# # Side bar menu |
||||
# chamilo_core.menu.simple_menu: |
||||
# class: Chamilo\CoreBundle\Menu\SimpleMenuBuilder |
||||
# arguments: [@service_container] |
||||
# |
||||
# # Main nav bar |
||||
# chamilo_core.menu.nav_builder: |
||||
# class: Chamilo\CoreBundle\Menu\NavBuilder |
||||
# arguments: [@knp_menu.factory, @router] |
||||
# tags: |
||||
# - { name: mopa_bootstrap.menu, alias: chamilo_core.menu.nav } |
||||
# |
||||
# chamilo_core.menu.course_menu_builder: |
||||
# class: Chamilo\CoreBundle\Menu\CourseMenuBuilder |
||||
# arguments: [@knp_menu.factory, @chamilo_core.entity.manager.course_manager, @router] |
||||
# |
||||
# # Course block |
||||
# chamilo_core.block.course: |
||||
# class: Chamilo\CoreBundle\Block\CourseBlockService |
||||
# arguments: [chamilo_core.block.course, @templating] |
||||
# tags: |
||||
# - { name: sonata.block } |
||||
# |
||||
# # Skill block |
||||
# chamilo_core.block.skill: |
||||
# class: Chamilo\CoreBundle\Block\SkillBlockService |
||||
# arguments: [chamilo_core.block.skill, @templating ] |
||||
# tags: |
||||
# - { name: sonata.block } |
||||
# |
||||
# # Breadcrumb block |
||||
# chamilo_core.block.breadcrumb: |
||||
# class: Chamilo\CoreBundle\Block\BreadcrumbBlockService |
||||
# arguments: ["chamilo_core.block.breadcrumb", "breadcrumb", @templating, @knp_menu.menu_provider, @knp_menu.factory] |
||||
# tags: |
||||
# - { name: sonata.block } |
||||
# - { name: sonata.breadcrumb } |
||||
|
||||
|
||||
@ -0,0 +1,43 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CoreBundle\Twig\Extension; |
||||
|
||||
/** |
||||
* Class ChamiloExtension |
||||
* @package Chamilo\CoreBundle\Twig\Extension |
||||
*/ |
||||
class ChamiloExtension extends \Twig_Extension |
||||
{ |
||||
/** |
||||
* @return array |
||||
*/ |
||||
public function getFilters() |
||||
{ |
||||
return array( |
||||
new \Twig_SimpleFilter('var_dump', 'var_dump'), |
||||
new \Twig_SimpleFilter('icon', 'Template::get_icon_path'), |
||||
new \Twig_SimpleFilter('api_get_local_time', 'api_get_local_time'), |
||||
|
||||
); |
||||
} |
||||
|
||||
/** |
||||
* {@inheritdoc} |
||||
*/ |
||||
public function getFunctions() |
||||
{ |
||||
return array( |
||||
); |
||||
} |
||||
|
||||
/** |
||||
* Returns the name of the extension. |
||||
* |
||||
* @return string The extension name |
||||
*/ |
||||
public function getName() |
||||
{ |
||||
return 'chamilo_extension'; |
||||
} |
||||
} |
||||
@ -0,0 +1,32 @@ |
||||
<?php |
||||
/** |
||||
* This file is part of the <name> project. |
||||
* |
||||
* (c) <yourname> <youremail> |
||||
* |
||||
* For the full copyright and license information, please view the LICENSE |
||||
* file that was distributed with this source code. |
||||
*/ |
||||
|
||||
namespace Chamilo\MediaBundle; |
||||
|
||||
use Symfony\Component\HttpKernel\Bundle\Bundle; |
||||
|
||||
/** |
||||
* This file has been generated by the EasyExtends bundle ( http://sonata-project.org/easy-extends ) |
||||
* |
||||
* References : |
||||
* bundles : http://symfony.com/doc/current/book/bundles.html |
||||
* |
||||
* @author <yourname> <youremail> |
||||
*/ |
||||
class ChamiloMediaBundle extends Bundle |
||||
{ |
||||
/** |
||||
* {@inheritdoc} |
||||
*/ |
||||
public function getParent() |
||||
{ |
||||
return 'SonataMediaBundle'; |
||||
} |
||||
} |
||||
@ -0,0 +1,40 @@ |
||||
<?php |
||||
|
||||
/** |
||||
* This file is part of the <name> project. |
||||
* |
||||
* (c) <yourname> <youremail> |
||||
* |
||||
* For the full copyright and license information, please view the LICENSE |
||||
* file that was distributed with this source code. |
||||
*/ |
||||
|
||||
namespace Chamilo\MediaBundle\Document; |
||||
|
||||
use Sonata\MediaBundle\Document\BaseGallery as BaseGallery; |
||||
|
||||
/** |
||||
* This file has been generated by the EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends ) |
||||
* |
||||
* References : |
||||
* working with object : http://www.doctrine-project.org/docs/mongodb_odm/1.0/en/reference/working-with-objects.html |
||||
* |
||||
* @author <yourname> <youremail> |
||||
*/ |
||||
class Gallery extends BaseGallery |
||||
{ |
||||
/** |
||||
* @var integer $id |
||||
*/ |
||||
protected $id; |
||||
|
||||
/** |
||||
* Get id |
||||
* |
||||
* @return integer $id |
||||
*/ |
||||
public function getId() |
||||
{ |
||||
return $this->id; |
||||
} |
||||
} |
||||
@ -0,0 +1,40 @@ |
||||
<?php |
||||
|
||||
/** |
||||
* This file is part of the <name> project. |
||||
* |
||||
* (c) <yourname> <youremail> |
||||
* |
||||
* For the full copyright and license information, please view the LICENSE |
||||
* file that was distributed with this source code. |
||||
*/ |
||||
|
||||
namespace Chamilo\MediaBundle\Document; |
||||
|
||||
use Sonata\MediaBundle\Document\BaseMedia as BaseMedia; |
||||
|
||||
/** |
||||
* This file has been generated by the EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends ) |
||||
* |
||||
* References : |
||||
* working with object : http://www.doctrine-project.org/docs/mongodb_odm/1.0/en/reference/working-with-objects.html |
||||
* |
||||
* @author <yourname> <youremail> |
||||
*/ |
||||
class Media extends BaseMedia |
||||
{ |
||||
/** |
||||
* @var integer $id |
||||
*/ |
||||
protected $id; |
||||
|
||||
/** |
||||
* Get id |
||||
* |
||||
* @return integer $id |
||||
*/ |
||||
public function getId() |
||||
{ |
||||
return $this->id; |
||||
} |
||||
} |
||||
@ -0,0 +1,40 @@ |
||||
<?php |
||||
|
||||
/** |
||||
* This file is part of the <name> project. |
||||
* |
||||
* (c) <yourname> <youremail> |
||||
* |
||||
* For the full copyright and license information, please view the LICENSE |
||||
* file that was distributed with this source code. |
||||
*/ |
||||
|
||||
namespace Chamilo\MediaBundle\Entity; |
||||
|
||||
use Sonata\MediaBundle\Entity\BaseGallery as BaseGallery; |
||||
|
||||
/** |
||||
* This file has been generated by the Sonata EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends ) |
||||
* |
||||
* References : |
||||
* working with object : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/working-with-objects/en |
||||
* |
||||
* @author <yourname> <youremail> |
||||
*/ |
||||
class Gallery extends BaseGallery |
||||
{ |
||||
/** |
||||
* @var integer $id |
||||
*/ |
||||
protected $id; |
||||
|
||||
/** |
||||
* Get id |
||||
* |
||||
* @return integer $id |
||||
*/ |
||||
public function getId() |
||||
{ |
||||
return $this->id; |
||||
} |
||||
} |
||||
@ -0,0 +1,40 @@ |
||||
<?php |
||||
|
||||
/** |
||||
* This file is part of the <name> project. |
||||
* |
||||
* (c) <yourname> <youremail> |
||||
* |
||||
* For the full copyright and license information, please view the LICENSE |
||||
* file that was distributed with this source code. |
||||
*/ |
||||
|
||||
namespace Chamilo\MediaBundle\Entity; |
||||
|
||||
use Sonata\MediaBundle\Entity\BaseGalleryHasMedia as BaseGalleryHasMedia; |
||||
|
||||
/** |
||||
* This file has been generated by the Sonata EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends ) |
||||
* |
||||
* References : |
||||
* working with object : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/working-with-objects/en |
||||
* |
||||
* @author <yourname> <youremail> |
||||
*/ |
||||
class GalleryHasMedia extends BaseGalleryHasMedia |
||||
{ |
||||
/** |
||||
* @var integer $id |
||||
*/ |
||||
protected $id; |
||||
|
||||
/** |
||||
* Get id |
||||
* |
||||
* @return integer $id |
||||
*/ |
||||
public function getId() |
||||
{ |
||||
return $this->id; |
||||
} |
||||
} |
||||
@ -0,0 +1,39 @@ |
||||
<?php |
||||
|
||||
/** |
||||
* This file is part of the <name> project. |
||||
* |
||||
* (c) <yourname> <youremail> |
||||
* |
||||
* For the full copyright and license information, please view the LICENSE |
||||
* file that was distributed with this source code. |
||||
*/ |
||||
|
||||
namespace Chamilo\MediaBundle\Entity; |
||||
|
||||
use Sonata\MediaBundle\Entity\BaseMedia as BaseMedia; |
||||
|
||||
/** |
||||
* |
||||
* References : |
||||
* working with object : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/working-with-objects/en |
||||
* |
||||
* @author <yourname> <youremail> |
||||
*/ |
||||
class Media extends BaseMedia |
||||
{ |
||||
/** |
||||
* @var integer $id |
||||
*/ |
||||
protected $id; |
||||
|
||||
/** |
||||
* Get id |
||||
* |
||||
* @return integer $id |
||||
*/ |
||||
public function getId() |
||||
{ |
||||
return $this->id; |
||||
} |
||||
} |
||||
@ -0,0 +1,40 @@ |
||||
<?php |
||||
|
||||
/** |
||||
* This file is part of the <name> project. |
||||
* |
||||
* (c) <yourname> <youremail> |
||||
* |
||||
* For the full copyright and license information, please view the LICENSE |
||||
* file that was distributed with this source code. |
||||
*/ |
||||
|
||||
namespace Chamilo\MediaBundle\PHPCR; |
||||
|
||||
use Sonata\MediaBundle\PHPCR\BaseGallery as BaseGallery; |
||||
|
||||
/** |
||||
* This file has been generated by the EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends ) |
||||
* |
||||
* References : |
||||
* working with object : http://docs.doctrine-project.org/projects/doctrine-phpcr-odm/en/latest/index.html |
||||
* |
||||
* @author <yourname> <youremail> |
||||
*/ |
||||
class Gallery extends BaseGallery |
||||
{ |
||||
/** |
||||
* @var integer $id |
||||
*/ |
||||
protected $id; |
||||
|
||||
/** |
||||
* Get id |
||||
* |
||||
* @return integer $id |
||||
*/ |
||||
public function getId() |
||||
{ |
||||
return $this->id; |
||||
} |
||||
} |
||||
@ -0,0 +1,40 @@ |
||||
<?php |
||||
|
||||
/** |
||||
* This file is part of the <name> project. |
||||
* |
||||
* (c) <yourname> <youremail> |
||||
* |
||||
* For the full copyright and license information, please view the LICENSE |
||||
* file that was distributed with this source code. |
||||
*/ |
||||
|
||||
namespace Chamilo\MediaBundle\PHPCR; |
||||
|
||||
use Sonata\MediaBundle\PHPCR\BaseGalleryHasMedia as BaseGalleryHasMedia; |
||||
|
||||
/** |
||||
* This file has been generated by the EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends ) |
||||
* |
||||
* References : |
||||
* working with object : http://docs.doctrine-project.org/projects/doctrine-phpcr-odm/en/latest/index.html |
||||
* |
||||
* @author <yourname> <youremail> |
||||
*/ |
||||
class GalleryHasMedia extends BaseGalleryHasMedia |
||||
{ |
||||
/** |
||||
* @var integer $id |
||||
*/ |
||||
protected $id; |
||||
|
||||
/** |
||||
* Get id |
||||
* |
||||
* @return integer $id |
||||
*/ |
||||
public function getId() |
||||
{ |
||||
return $this->id; |
||||
} |
||||
} |
||||
@ -0,0 +1,27 @@ |
||||
<?php |
||||
|
||||
/** |
||||
* This file is part of the <name> project. |
||||
* |
||||
* (c) <yourname> <youremail> |
||||
* |
||||
* For the full copyright and license information, please view the LICENSE |
||||
* file that was distributed with this source code. |
||||
*/ |
||||
|
||||
namespace Chamilo\MediaBundle\PHPCR; |
||||
|
||||
use Sonata\MediaBundle\PHPCR\BaseGalleryHasMediaRepository; |
||||
|
||||
/** |
||||
* This file has been generated by the EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends ) |
||||
* |
||||
* References : |
||||
* query builder : http://www.doctrine-project.org/docs/mongodb_odm/1.0/en/reference/query-builder-api.html |
||||
* |
||||
* @author <yourname> <youremail> |
||||
*/ |
||||
class GalleryHasMediaRepository extends BaseGalleryHasMediaRepository |
||||
{ |
||||
|
||||
} |
||||
@ -0,0 +1,27 @@ |
||||
<?php |
||||
|
||||
/** |
||||
* This file is part of the <name> project. |
||||
* |
||||
* (c) <yourname> <youremail> |
||||
* |
||||
* For the full copyright and license information, please view the LICENSE |
||||
* file that was distributed with this source code. |
||||
*/ |
||||
|
||||
namespace Chamilo\MediaBundle\PHPCR; |
||||
|
||||
use Sonata\MediaBundle\PHPCR\BaseGalleryRepository; |
||||
|
||||
/** |
||||
* This file has been generated by the EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends ) |
||||
* |
||||
* References : |
||||
* query builder : http://www.doctrine-project.org/docs/mongodb_odm/1.0/en/reference/query-builder-api.html |
||||
* |
||||
* @author <yourname> <youremail> |
||||
*/ |
||||
class GalleryRepository extends BaseGalleryRepository |
||||
{ |
||||
|
||||
} |
||||
@ -0,0 +1,40 @@ |
||||
<?php |
||||
|
||||
/** |
||||
* This file is part of the <name> project. |
||||
* |
||||
* (c) <yourname> <youremail> |
||||
* |
||||
* For the full copyright and license information, please view the LICENSE |
||||
* file that was distributed with this source code. |
||||
*/ |
||||
|
||||
namespace Chamilo\MediaBundle\PHPCR; |
||||
|
||||
use Sonata\MediaBundle\PHPCR\BaseMedia as BaseMedia; |
||||
|
||||
/** |
||||
* This file has been generated by the EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends ) |
||||
* |
||||
* References : |
||||
* working with object : http://docs.doctrine-project.org/projects/doctrine-phpcr-odm/en/latest/index.html |
||||
* |
||||
* @author <yourname> <youremail> |
||||
*/ |
||||
class Media extends BaseMedia |
||||
{ |
||||
/** |
||||
* @var integer $id |
||||
*/ |
||||
protected $id; |
||||
|
||||
/** |
||||
* Get id |
||||
* |
||||
* @return integer $id |
||||
*/ |
||||
public function getId() |
||||
{ |
||||
return $this->id; |
||||
} |
||||
} |
||||
@ -0,0 +1,27 @@ |
||||
<?php |
||||
|
||||
/** |
||||
* This file is part of the <name> project. |
||||
* |
||||
* (c) <yourname> <youremail> |
||||
* |
||||
* For the full copyright and license information, please view the LICENSE |
||||
* file that was distributed with this source code. |
||||
*/ |
||||
|
||||
namespace Chamilo\MediaBundle\PHPCR; |
||||
|
||||
use Sonata\MediaBundle\PHPCR\BaseMediaRepository; |
||||
|
||||
/** |
||||
* This file has been generated by the EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends ) |
||||
* |
||||
* References : |
||||
* query builder : http://www.doctrine-project.org/docs/mongodb_odm/1.0/en/reference/query-builder-api.html |
||||
* |
||||
* @author <yourname> <youremail> |
||||
*/ |
||||
class MediaRepository extends BaseMediaRepository |
||||
{ |
||||
|
||||
} |
||||
@ -0,0 +1,18 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<doctrine-mongo-mapping |
||||
xmlns="http://doctrine-project.org/schemas/odm/doctrine-mongo-mapping" |
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||
xsi:schemaLocation="http://doctrine-project.org/schemas/odm/doctrine-mongo-mapping |
||||
http://doctrine-project.org/schemas/odm/doctrine-mongo-mapping.xsd"> |
||||
<!-- |
||||
This file has been generated by the EasyExtends bundle ( http://sonata-project.org/easy-extends ) |
||||
|
||||
References : |
||||
xsd : https://github.com/doctrine/doctrine2/blob/master/doctrine-mapping.xsd |
||||
xml mapping : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/xml-mapping/en |
||||
association mapping : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/association-mapping/en |
||||
--> |
||||
<document name="Chamilo\MediaBundle\Document\Gallery"> |
||||
<field fieldName="id" id="true"/> |
||||
</document> |
||||
</doctrine-mongo-mapping> |
||||
@ -0,0 +1,24 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<doctrine-mapping |
||||
xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" |
||||
xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||
schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd"> |
||||
<!-- |
||||
This file has been generated by the EasyExtends bundle ( http://sonata-project.org/easy-extends ) |
||||
|
||||
References : |
||||
xsd : https://github.com/doctrine/doctrine2/blob/master/doctrine-mapping.xsd |
||||
xml mapping : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/xml-mapping/en |
||||
association mapping : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/association-mapping/en |
||||
--> |
||||
<entity |
||||
name="Chamilo\MediaBundle\Entity\Gallery" |
||||
table="media__gallery" |
||||
> |
||||
|
||||
<id name="id" type="integer" column="id"> |
||||
<generator strategy="AUTO"/> |
||||
</id> |
||||
|
||||
</entity> |
||||
</doctrine-mapping> |
||||
@ -0,0 +1,25 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<doctrine-phpcr-mapping |
||||
xmlns="http://doctrine-project.org/schemas/odm/doctrine-mongo-mapping" |
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||
xsi:schemaLocation="http://doctrine-project.org/schemas/odm/doctrine-mongo-mapping |
||||
http://doctrine-project.org/schemas/odm/doctrine-mongo-mapping.xsd"> |
||||
<!-- |
||||
This file has been generated by the EasyExtends bundle ( http://sonata-project.org/easy-extends ) |
||||
|
||||
References : |
||||
xsd : https://github.com/doctrine/doctrine2/blob/master/doctrine-mapping.xsd |
||||
xml mapping : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/xml-mapping/en |
||||
association mapping : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/association-mapping/en |
||||
--> |
||||
|
||||
<document name="Chamilo\MediaBundle\PHPCR\Gallery" |
||||
repository-class="Chamilo\MediaBundle\PHPCR\GalleryRepository"> |
||||
|
||||
<id name="id" type="id"> |
||||
<generator strategy="repository"/> |
||||
</id> |
||||
|
||||
</document> |
||||
|
||||
</doctrine-phpcr-mapping> |
||||
@ -0,0 +1,24 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<doctrine-mapping |
||||
xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" |
||||
xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||
schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd"> |
||||
<!-- |
||||
This file has been generated by the EasyExtends bundle ( http://sonata-project.org/easy-extends ) |
||||
|
||||
References : |
||||
xsd : https://github.com/doctrine/doctrine2/blob/master/doctrine-mapping.xsd |
||||
xml mapping : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/xml-mapping/en |
||||
association mapping : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/association-mapping/en |
||||
--> |
||||
<entity |
||||
name="Chamilo\MediaBundle\Entity\GalleryHasMedia" |
||||
table="media__gallery_media" |
||||
> |
||||
|
||||
<id name="id" type="integer" column="id"> |
||||
<generator strategy="AUTO"/> |
||||
</id> |
||||
|
||||
</entity> |
||||
</doctrine-mapping> |
||||
@ -0,0 +1,28 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<doctrine-phpcr-mapping |
||||
xmlns="http://doctrine-project.org/schemas/odm/doctrine-mongo-mapping" |
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||
xsi:schemaLocation="http://doctrine-project.org/schemas/odm/doctrine-mongo-mapping |
||||
http://doctrine-project.org/schemas/odm/doctrine-mongo-mapping.xsd"> |
||||
<!-- |
||||
This file has been generated by the EasyExtends bundle ( http://sonata-project.org/easy-extends ) |
||||
|
||||
References : |
||||
xsd : https://github.com/doctrine/doctrine2/blob/master/doctrine-mapping.xsd |
||||
xml mapping : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/xml-mapping/en |
||||
association mapping : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/association-mapping/en |
||||
--> |
||||
|
||||
<document name="Chamilo\MediaBundle\PHPCR\GalleryHasMedia" |
||||
repository-class="Chamilo\MediaBundle\PHPCR\GalleryHasMediaRepository"> |
||||
|
||||
<id name="id" type="id"> |
||||
<generator strategy="repository"/> |
||||
</id> |
||||
|
||||
<reference-many name="media" |
||||
target-document="Chamilo\MediaBundle\PHPCR\GalleryHasMedia"/> |
||||
|
||||
</document> |
||||
|
||||
</doctrine-phpcr-mapping> |
||||
@ -0,0 +1,18 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<doctrine-mongo-mapping |
||||
xmlns="http://doctrine-project.org/schemas/odm/doctrine-mongo-mapping" |
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||
xsi:schemaLocation="http://doctrine-project.org/schemas/odm/doctrine-mongo-mapping |
||||
http://doctrine-project.org/schemas/odm/doctrine-mongo-mapping.xsd"> |
||||
<!-- |
||||
This file has been generated by the EasyExtends bundle ( http://sonata-project.org/easy-extends ) |
||||
|
||||
References : |
||||
xsd : https://github.com/doctrine/doctrine2/blob/master/doctrine-mapping.xsd |
||||
xml mapping : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/xml-mapping/en |
||||
association mapping : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/association-mapping/en |
||||
--> |
||||
<document name="Chamilo\MediaBundle\Document\Media"> |
||||
<field fieldName="id" id="true"/> |
||||
</document> |
||||
</doctrine-mongo-mapping> |
||||
@ -0,0 +1,24 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<doctrine-mapping |
||||
xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" |
||||
xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||
schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd"> |
||||
<!-- |
||||
This file has been generated by the EasyExtends bundle ( http://sonata-project.org/easy-extends ) |
||||
|
||||
References : |
||||
xsd : https://github.com/doctrine/doctrine2/blob/master/doctrine-mapping.xsd |
||||
xml mapping : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/xml-mapping/en |
||||
association mapping : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/association-mapping/en |
||||
--> |
||||
<entity |
||||
name="Chamilo\MediaBundle\Entity\Media" |
||||
table="media__media" |
||||
> |
||||
|
||||
<id name="id" type="integer" column="id"> |
||||
<generator strategy="AUTO"/> |
||||
</id> |
||||
|
||||
</entity> |
||||
</doctrine-mapping> |
||||
@ -0,0 +1,25 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<doctrine-phpcr-mapping |
||||
xmlns="http://doctrine-project.org/schemas/odm/doctrine-mongo-mapping" |
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||
xsi:schemaLocation="http://doctrine-project.org/schemas/odm/doctrine-mongo-mapping |
||||
http://doctrine-project.org/schemas/odm/doctrine-mongo-mapping.xsd"> |
||||
<!-- |
||||
This file has been generated by the EasyExtends bundle ( http://sonata-project.org/easy-extends ) |
||||
|
||||
References : |
||||
xsd : https://github.com/doctrine/doctrine2/blob/master/doctrine-mapping.xsd |
||||
xml mapping : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/xml-mapping/en |
||||
association mapping : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/association-mapping/en |
||||
--> |
||||
|
||||
<document name="Chamilo\MediaBundle\PHPCR\Media" |
||||
repository-class="Chamilo\MediaBundle\PHPCR\MediaRepository"> |
||||
|
||||
<id name="id" type="id"> |
||||
<generator strategy="repository"/> |
||||
</id> |
||||
|
||||
</document> |
||||
|
||||
</doctrine-phpcr-mapping> |
||||
@ -0,0 +1,17 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<serializer> |
||||
<!-- |
||||
This file has been generated by the EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends ) |
||||
|
||||
@author <yourname> <youremail> |
||||
--> |
||||
|
||||
<class name="Chamilo\MediaBundle\Document\Gallery" exclusion-policy="all" |
||||
xml-root-name="_gallery"> |
||||
|
||||
<property xml-attribute-map="true" name="id" type="integer" |
||||
expose="true" since-version="1.0" |
||||
groups="sonata_api_read,sonata_api_write,sonata_search"/> |
||||
|
||||
</class> |
||||
</serializer> |
||||
@ -0,0 +1,17 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<serializer> |
||||
<!-- |
||||
This file has been generated by the EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends ) |
||||
|
||||
@author <yourname> <youremail> |
||||
--> |
||||
|
||||
<class name="Chamilo\MediaBundle\Document\GalleryHasMedia" |
||||
exclusion-policy="all" xml-root-name="_gallery_has_media"> |
||||
|
||||
<property xml-attribute-map="true" name="id" type="integer" |
||||
expose="true" since-version="1.0" |
||||
groups="sonata_api_read,sonata_api_write,sonata_search"/> |
||||
|
||||
</class> |
||||
</serializer> |
||||
@ -0,0 +1,17 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<serializer> |
||||
<!-- |
||||
This file has been generated by the EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends ) |
||||
|
||||
@author <yourname> <youremail> |
||||
--> |
||||
|
||||
<class name="Chamilo\MediaBundle\Document\Media" exclusion-policy="all" |
||||
xml-root-name="_media"> |
||||
|
||||
<property xml-attribute-map="true" name="id" type="integer" |
||||
expose="true" since-version="1.0" |
||||
groups="sonata_api_read,sonata_api_write,sonata_search"/> |
||||
|
||||
</class> |
||||
</serializer> |
||||
@ -0,0 +1,17 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<serializer> |
||||
<!-- |
||||
This file has been generated by the EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends ) |
||||
|
||||
@author <yourname> <youremail> |
||||
--> |
||||
|
||||
<class name="Chamilo\MediaBundle\Entity\Gallery" exclusion-policy="all" |
||||
xml-root-name="_gallery"> |
||||
|
||||
<property xml-attribute-map="true" name="id" type="integer" |
||||
expose="true" since-version="1.0" |
||||
groups="sonata_api_read,sonata_api_write,sonata_search"/> |
||||
|
||||
</class> |
||||
</serializer> |
||||
@ -0,0 +1,17 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<serializer> |
||||
<!-- |
||||
This file has been generated by the EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends ) |
||||
|
||||
@author <yourname> <youremail> |
||||
--> |
||||
|
||||
<class name="Chamilo\MediaBundle\Entity\GalleryHasMedia" |
||||
exclusion-policy="all" xml-root-name="_gallery_has_media"> |
||||
|
||||
<property xml-attribute-map="true" name="id" type="integer" |
||||
expose="true" since-version="1.0" |
||||
groups="sonata_api_read,sonata_api_write,sonata_search"/> |
||||
|
||||
</class> |
||||
</serializer> |
||||
@ -0,0 +1,17 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<serializer> |
||||
<!-- |
||||
This file has been generated by the EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends ) |
||||
|
||||
@author <yourname> <youremail> |
||||
--> |
||||
|
||||
<class name="Chamilo\MediaBundle\Entity\Media" exclusion-policy="all" |
||||
xml-root-name="_media"> |
||||
|
||||
<property xml-attribute-map="true" name="id" type="integer" |
||||
expose="true" since-version="1.0" |
||||
groups="sonata_api_read,sonata_api_write,sonata_search"/> |
||||
|
||||
</class> |
||||
</serializer> |
||||
@ -0,0 +1,21 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\PageBundle; |
||||
|
||||
use Symfony\Component\HttpKernel\Bundle\Bundle; |
||||
|
||||
/** |
||||
* Class ChamiloPageBundle |
||||
* @package Chamilo\PageBundle |
||||
*/ |
||||
class ChamiloPageBundle extends Bundle |
||||
{ |
||||
/** |
||||
* {@inheritdoc} |
||||
*/ |
||||
public function getParent() |
||||
{ |
||||
return 'SonataPageBundle'; |
||||
} |
||||
} |
||||
@ -0,0 +1,40 @@ |
||||
<?php |
||||
|
||||
/** |
||||
* This file is part of the <name> project. |
||||
* |
||||
* (c) <yourname> <youremail> |
||||
* |
||||
* For the full copyright and license information, please view the LICENSE |
||||
* file that was distributed with this source code. |
||||
*/ |
||||
|
||||
namespace Chamilo\PageBundle\Entity; |
||||
|
||||
use Sonata\PageBundle\Entity\BaseBlock as BaseBlock; |
||||
|
||||
/** |
||||
* This file has been generated by the Sonata EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends ) |
||||
* |
||||
* References : |
||||
* working with object : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/working-with-objects/en |
||||
* |
||||
* @author <yourname> <youremail> |
||||
*/ |
||||
class Block extends BaseBlock |
||||
{ |
||||
/** |
||||
* @var integer $id |
||||
*/ |
||||
protected $id; |
||||
|
||||
/** |
||||
* Get id |
||||
* |
||||
* @return integer $id |
||||
*/ |
||||
public function getId() |
||||
{ |
||||
return $this->id; |
||||
} |
||||
} |
||||
@ -0,0 +1,40 @@ |
||||
<?php |
||||
|
||||
/** |
||||
* This file is part of the <name> project. |
||||
* |
||||
* (c) <yourname> <youremail> |
||||
* |
||||
* For the full copyright and license information, please view the LICENSE |
||||
* file that was distributed with this source code. |
||||
*/ |
||||
|
||||
namespace Chamilo\PageBundle\Entity; |
||||
|
||||
use Sonata\PageBundle\Entity\BasePage as BasePage; |
||||
|
||||
/** |
||||
* This file has been generated by the Sonata EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends ) |
||||
* |
||||
* References : |
||||
* working with object : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/working-with-objects/en |
||||
* |
||||
* @author <yourname> <youremail> |
||||
*/ |
||||
class Page extends BasePage |
||||
{ |
||||
/** |
||||
* @var integer $id |
||||
*/ |
||||
protected $id; |
||||
|
||||
/** |
||||
* Get id |
||||
* |
||||
* @return integer $id |
||||
*/ |
||||
public function getId() |
||||
{ |
||||
return $this->id; |
||||
} |
||||
} |
||||
@ -0,0 +1,40 @@ |
||||
<?php |
||||
|
||||
/** |
||||
* This file is part of the <name> project. |
||||
* |
||||
* (c) <yourname> <youremail> |
||||
* |
||||
* For the full copyright and license information, please view the LICENSE |
||||
* file that was distributed with this source code. |
||||
*/ |
||||
|
||||
namespace Chamilo\PageBundle\Entity; |
||||
|
||||
use Sonata\PageBundle\Entity\BaseSite as BaseSite; |
||||
|
||||
/** |
||||
* This file has been generated by the Sonata EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends ) |
||||
* |
||||
* References : |
||||
* working with object : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/working-with-objects/en |
||||
* |
||||
* @author <yourname> <youremail> |
||||
*/ |
||||
class Site extends BaseSite |
||||
{ |
||||
/** |
||||
* @var integer $id |
||||
*/ |
||||
protected $id; |
||||
|
||||
/** |
||||
* Get id |
||||
* |
||||
* @return integer $id |
||||
*/ |
||||
public function getId() |
||||
{ |
||||
return $this->id; |
||||
} |
||||
} |
||||
@ -0,0 +1,40 @@ |
||||
<?php |
||||
|
||||
/** |
||||
* This file is part of the <name> project. |
||||
* |
||||
* (c) <yourname> <youremail> |
||||
* |
||||
* For the full copyright and license information, please view the LICENSE |
||||
* file that was distributed with this source code. |
||||
*/ |
||||
|
||||
namespace Chamilo\PageBundle\Entity; |
||||
|
||||
use Sonata\PageBundle\Entity\BaseSnapshot as BaseSnapshot; |
||||
|
||||
/** |
||||
* This file has been generated by the Sonata EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends ) |
||||
* |
||||
* References : |
||||
* working with object : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/working-with-objects/en |
||||
* |
||||
* @author <yourname> <youremail> |
||||
*/ |
||||
class Snapshot extends BaseSnapshot |
||||
{ |
||||
/** |
||||
* @var integer $id |
||||
*/ |
||||
protected $id; |
||||
|
||||
/** |
||||
* Get id |
||||
* |
||||
* @return integer $id |
||||
*/ |
||||
public function getId() |
||||
{ |
||||
return $this->id; |
||||
} |
||||
} |
||||
@ -0,0 +1,24 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<doctrine-mapping |
||||
xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" |
||||
xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||
schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd"> |
||||
<!-- |
||||
This file has been generated by the EasyExtends bundle ( http://sonata-project.org/easy-extends ) |
||||
|
||||
References : |
||||
xsd : https://github.com/doctrine/doctrine2/blob/master/doctrine-mapping.xsd |
||||
xml mapping : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/xml-mapping/en |
||||
association mapping : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/association-mapping/en |
||||
--> |
||||
<entity |
||||
name="Chamilo\PageBundle\Entity\Block" |
||||
table="page__bloc" |
||||
repository-class="Doctrine\ORM\EntityRepository"> |
||||
|
||||
<id name="id" type="integer" column="id"> |
||||
<generator strategy="AUTO"/> |
||||
</id> |
||||
|
||||
</entity> |
||||
</doctrine-mapping> |
||||
@ -0,0 +1,24 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<doctrine-mapping |
||||
xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" |
||||
xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||
schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd"> |
||||
<!-- |
||||
This file has been generated by the EasyExtends bundle ( http://sonata-project.org/easy-extends ) |
||||
|
||||
References : |
||||
xsd : https://github.com/doctrine/doctrine2/blob/master/doctrine-mapping.xsd |
||||
xml mapping : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/xml-mapping/en |
||||
association mapping : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/association-mapping/en |
||||
--> |
||||
<entity |
||||
name="Chamilo\PageBundle\Entity\Page" |
||||
table="page__page" |
||||
> |
||||
|
||||
<id name="id" type="integer" column="id"> |
||||
<generator strategy="AUTO"/> |
||||
</id> |
||||
|
||||
</entity> |
||||
</doctrine-mapping> |
||||
@ -0,0 +1,24 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<doctrine-mapping |
||||
xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" |
||||
xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||
schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd"> |
||||
<!-- |
||||
This file has been generated by the EasyExtends bundle ( http://sonata-project.org/easy-extends ) |
||||
|
||||
References : |
||||
xsd : https://github.com/doctrine/doctrine2/blob/master/doctrine-mapping.xsd |
||||
xml mapping : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/xml-mapping/en |
||||
association mapping : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/association-mapping/en |
||||
--> |
||||
<entity |
||||
name="Chamilo\PageBundle\Entity\Site" |
||||
table="page__site" |
||||
> |
||||
|
||||
<id name="id" type="integer" column="id"> |
||||
<generator strategy="AUTO"/> |
||||
</id> |
||||
|
||||
</entity> |
||||
</doctrine-mapping> |
||||
@ -0,0 +1,24 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<doctrine-mapping |
||||
xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" |
||||
xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||
schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd"> |
||||
<!-- |
||||
This file has been generated by the EasyExtends bundle ( http://sonata-project.org/easy-extends ) |
||||
|
||||
References : |
||||
xsd : https://github.com/doctrine/doctrine2/blob/master/doctrine-mapping.xsd |
||||
xml mapping : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/xml-mapping/en |
||||
association mapping : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/association-mapping/en |
||||
--> |
||||
<entity |
||||
name="Chamilo\PageBundle\Entity\Snapshot" |
||||
table="page__snapshot" |
||||
> |
||||
|
||||
<id name="id" type="integer" column="id"> |
||||
<generator strategy="AUTO"/> |
||||
</id> |
||||
|
||||
</entity> |
||||
</doctrine-mapping> |
||||
@ -0,0 +1,11 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<serializer> |
||||
<class name="Chamilo\PageBundle\Entity\Block" exclusion-policy="all" |
||||
xml-root-name="block"> |
||||
|
||||
<property xml-attribute-map="true" name="id" type="integer" |
||||
expose="true" since-version="1.0" |
||||
groups="sonata_api_read,sonata_api_write,sonata_search"/> |
||||
|
||||
</class> |
||||
</serializer> |
||||
@ -0,0 +1,11 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<serializer> |
||||
<class name="Chamilo\PageBundle\Entity\Page" exclusion-policy="all" |
||||
xml-root-name="page"> |
||||
|
||||
<property xml-attribute-map="true" name="id" type="integer" |
||||
expose="true" since-version="1.0" |
||||
groups="sonata_api_read,sonata_api_write,sonata_search"/> |
||||
|
||||
</class> |
||||
</serializer> |
||||
@ -0,0 +1,11 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<serializer> |
||||
<class name="Chamilo\PageBundle\Entity\Site" exclusion-policy="all" |
||||
xml-root-name="site"> |
||||
|
||||
<property xml-attribute-map="true" name="id" type="integer" |
||||
expose="true" since-version="1.0" |
||||
groups="sonata_api_read,sonata_api_write,sonata_search"/> |
||||
|
||||
</class> |
||||
</serializer> |
||||
@ -0,0 +1,11 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<serializer> |
||||
<class name="Chamilo\PageBundle\Entity\Snapshot" exclusion-policy="all" |
||||
xml-root-name="snapshot"> |
||||
|
||||
<property xml-attribute-map="true" name="id" type="integer" |
||||
expose="true" since-version="1.0" |
||||
groups="sonata_api_read,sonata_api_write,sonata_search"/> |
||||
|
||||
</class> |
||||
</serializer> |
||||
@ -0,0 +1,21 @@ |
||||
{# |
||||
|
||||
This file is part of the Sonata package. |
||||
|
||||
(c) Thomas Rabaix <thomas.rabaix@sonata-project.org> |
||||
|
||||
For the full copyright and license information, please view the LICENSE |
||||
file that was distributed with this source code. |
||||
|
||||
#} |
||||
|
||||
{% extends 'knp_menu_ordered.html.twig' %} |
||||
{% block label %}{{ item.label|trans(item.getExtra('translation_params', {}), item.getExtra('translation_domain', 'SonataSeoBundle')) }}{% endblock %} |
||||
|
||||
{% block list %} |
||||
{% spaceless %} |
||||
<div class="sonata_breadcrumb"> |
||||
{{ parent() }} |
||||
</div> |
||||
{% endspaceless %} |
||||
{% endblock %} |
||||
@ -0,0 +1,20 @@ |
||||
{# |
||||
|
||||
This file is part of the Sonata package. |
||||
|
||||
(c) Thomas Rabaix <thomas.rabaix@sonata-project.org> |
||||
|
||||
For the full copyright and license information, please view the LICENSE |
||||
file that was distributed with this source code. |
||||
|
||||
#} |
||||
|
||||
{% extends "SonataUserBundle:Security:base_login.html.twig" %} |
||||
|
||||
{% block fos_user_content %} |
||||
{% if app.request.session.get('sonata_basket_delivery_redirect') %} |
||||
{% include 'SonataBasketBundle:Basket:stepper.html.twig' with {step: 'identification'} %} |
||||
{% endif %} |
||||
|
||||
{{ parent() }} |
||||
{% endblock fos_user_content %} |
||||
@ -0,0 +1,38 @@ |
||||
{# |
||||
|
||||
This file is part of the Sonata package. |
||||
|
||||
(c) Thomas Rabaix <thomas.rabaix@sonata-project.org> |
||||
|
||||
For the full copyright and license information, please view the LICENSE |
||||
file that was distributed with this source code. |
||||
|
||||
#} |
||||
{% extends 'SonataPageBundle::2columns_layout.html.twig' %} |
||||
|
||||
{% block sonata_page_body_tag %} |
||||
{{ parent() }} |
||||
|
||||
{% include "SonataSeoBundle:Block:_facebook_sdk.html.twig" %} |
||||
{% include "SonataSeoBundle:Block:_twitter_sdk.html.twig" %} |
||||
{% include "SonataSeoBundle:Block:_pinterest_sdk.html.twig" %} |
||||
|
||||
{% endblock %} |
||||
|
||||
{% block sonata_page_javascripts %} |
||||
<script type="text/javascript"> |
||||
var basket_update_confirmation_message = '{{ 'sonata_basket_update_confirmation'|trans({}, 'SonataDemoBundle')|escape('js') }}'; |
||||
</script> |
||||
|
||||
<script src="{{ asset('assetic/sonata_front_js.js') }}" type="text/javascript"></script> |
||||
{% endblock %} |
||||
|
||||
{% block sonata_page_container %} |
||||
<div class="demonstration-bar">{{ 'sonata.demo.demonstration.message'|trans({}, 'SonataDemoBundle') }}</div> |
||||
|
||||
<a href="https://github.com/sonata-project"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_green_007200.png" alt="Fork me on GitHub"></a> |
||||
|
||||
{{ parent() }} |
||||
{% endblock %} |
||||
|
||||
{% block sonata_page_breadcrumb %}{% endblock %} |
||||
@ -0,0 +1,26 @@ |
||||
{% extends 'SonataPageBundle::layout.html.twig' %} |
||||
{#{% extends '@ChamiloCore/layout_one_col.html.twig' %}#} |
||||
|
||||
{% block sonata_page_body_tag %} |
||||
{{ parent() }} |
||||
|
||||
{% include "SonataSeoBundle:Block:_facebook_sdk.html.twig" %} |
||||
{% include "SonataSeoBundle:Block:_twitter_sdk.html.twig" %} |
||||
{% include "SonataSeoBundle:Block:_pinterest_sdk.html.twig" %} |
||||
|
||||
{% endblock %} |
||||
|
||||
{% block sonata_page_javascripts %} |
||||
<script type="text/javascript"> |
||||
var basket_update_confirmation_message = '{{ 'sonata_basket_update_confirmation'|trans({}, 'SonataDemoBundle')|escape('js') }}'; |
||||
</script> |
||||
|
||||
<script src="{{ asset('assetic/sonata_front_js.js') }}" |
||||
type="text/javascript"></script> |
||||
{% endblock %} |
||||
|
||||
{% block sonata_page_container %} |
||||
{{ parent() }} |
||||
{% endblock %} |
||||
|
||||
{% block sonata_page_breadcrumb %}{% endblock %} |
||||
@ -0,0 +1,24 @@ |
||||
<?php |
||||
|
||||
namespace Chamilo\UserBundle\Admin; |
||||
|
||||
use Sonata\UserBundle\Admin\Model\GroupAdmin as BaseGroupAdmin; |
||||
use Sonata\AdminBundle\Admin\Admin; |
||||
use Sonata\AdminBundle\Datagrid\DatagridMapper; |
||||
use Sonata\AdminBundle\Datagrid\ListMapper; |
||||
use Sonata\AdminBundle\Form\FormMapper; |
||||
|
||||
class GroupAdmin extends BaseGroupAdmin |
||||
{ |
||||
/** |
||||
* {@inheritdoc} |
||||
*/ |
||||
protected function configureListFields(ListMapper $listMapper) |
||||
{ |
||||
$listMapper |
||||
->addIdentifier('name') |
||||
->add('code') |
||||
->add('roles') |
||||
; |
||||
} |
||||
} |
||||
@ -0,0 +1,194 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\UserBundle\Admin; |
||||
|
||||
use Sonata\UserBundle\Admin\Model\UserAdmin as BaseUserAdmin; |
||||
use Sonata\AdminBundle\Form\FormMapper; |
||||
use Sonata\AdminBundle\Datagrid\DatagridMapper; |
||||
|
||||
/** |
||||
* Class UserAdmin |
||||
* @package Chamilo\UserBundle\Admin |
||||
*/ |
||||
class UserAdmin extends BaseUserAdmin |
||||
{ |
||||
/** |
||||
* {@inheritdoc} |
||||
*/ |
||||
protected function configureFormFields(FormMapper $formMapper) |
||||
{ |
||||
// define group zoning |
||||
$formMapper |
||||
->tab('User') |
||||
->with('Profile', array('class' => 'col-md-6'))->end() |
||||
->with('General', array('class' => 'col-md-6'))->end() |
||||
->with('Social', array('class' => 'col-md-6'))->end() |
||||
->end() |
||||
->tab('Security') |
||||
->with('Status', array('class' => 'col-md-4'))->end() |
||||
->with('Groups', array('class' => 'col-md-4'))->end() |
||||
->with('Keys', array('class' => 'col-md-4'))->end() |
||||
->with('Roles', array('class' => 'col-md-12'))->end() |
||||
->end() |
||||
->tab('ExtraFields') |
||||
->with('ExtraFields', array('class' => 'col-md-4'))->end() |
||||
->end(); |
||||
|
||||
$now = new \DateTime(); |
||||
|
||||
$formMapper |
||||
->tab('User') |
||||
->with('General') |
||||
->add('username') |
||||
->add('email') |
||||
->add( |
||||
'plainPassword', |
||||
'text', |
||||
array( |
||||
'required' => (!$this->getSubject() || is_null( |
||||
$this->getSubject()->getId() |
||||
)), |
||||
) |
||||
) |
||||
->end() |
||||
->with('Profile') |
||||
->add( |
||||
'dateOfBirth', |
||||
'sonata_type_date_picker', |
||||
array( |
||||
'years' => range(1900, $now->format('Y')), |
||||
'dp_min_date' => '1-1-1900', |
||||
'dp_max_date' => $now->format('c'), |
||||
'required' => false, |
||||
) |
||||
) |
||||
->add('firstname', null, array('required' => false)) |
||||
->add('lastname', null, array('required' => false)) |
||||
->add('website', 'url', array('required' => false)) |
||||
->add('biography', 'text', array('required' => false)) |
||||
->add( |
||||
'gender', |
||||
'sonata_user_gender', |
||||
array( |
||||
'required' => true, |
||||
'translation_domain' => $this->getTranslationDomain(), |
||||
) |
||||
) |
||||
->add('locale', 'locale', array('required' => false)) |
||||
->add('timezone', 'timezone', array('required' => false)) |
||||
->add('phone', null, array('required' => false)) |
||||
->end() |
||||
->with('Social') |
||||
->add('facebookUid', null, array('required' => false)) |
||||
->add('facebookName', null, array('required' => false)) |
||||
->add('twitterUid', null, array('required' => false)) |
||||
->add('twitterName', null, array('required' => false)) |
||||
->add('gplusUid', null, array('required' => false)) |
||||
->add('gplusName', null, array('required' => false)) |
||||
->end() |
||||
->end(); |
||||
|
||||
if ($this->getSubject() && !$this->getSubject()->hasRole( |
||||
'ROLE_SUPER_ADMIN' |
||||
) |
||||
) { |
||||
$formMapper |
||||
->tab('Security') |
||||
->with('Status') |
||||
->add('locked', null, array('required' => false)) |
||||
->add('expired', null, array('required' => false)) |
||||
->add('enabled', null, array('required' => false)) |
||||
->add('credentialsExpired', null, array('required' => false)) |
||||
->end() |
||||
->with('Groups') |
||||
->add( |
||||
'groups', |
||||
'sonata_type_model', |
||||
array( |
||||
'required' => false, |
||||
'expanded' => true, |
||||
'multiple' => true, |
||||
) |
||||
) |
||||
->end() |
||||
->with('Roles') |
||||
->add( |
||||
'realRoles', |
||||
'sonata_security_roles', |
||||
array( |
||||
'label' => 'form.label_roles', |
||||
'expanded' => true, |
||||
'multiple' => true, |
||||
'required' => false, |
||||
) |
||||
) |
||||
->end() |
||||
->end(); |
||||
} |
||||
|
||||
$formMapper |
||||
->tab('Security') |
||||
->with('Keys') |
||||
->add('token', null, array('required' => false)) |
||||
->add('twoStepVerificationCode', null, array('required' => false)) |
||||
->end() |
||||
->end(); |
||||
// |
||||
// $formMapper |
||||
// ->tab('ExtraFields') |
||||
// ->with('ExtraFields') |
||||
// ->add( |
||||
// 'extraFields', |
||||
// 'sonata_type_collection', |
||||
// array( |
||||
// 'cascade_validation' => true, |
||||
// /*'type_options' => array( |
||||
// // Prevents the "Delete" option from being displayed |
||||
// 'delete' => false, |
||||
// 'delete_options' => array( |
||||
// // You may otherwise choose to put the field but hide it |
||||
// 'type' => 'hidden', |
||||
// // In that case, you need to fill in the options as well |
||||
// 'type_options' => array( |
||||
// 'mapped' => false, |
||||
// 'required' => false, |
||||
// ) |
||||
// ) |
||||
// )*/ |
||||
// ), |
||||
// array( |
||||
// 'allow_delete' => true, |
||||
// 'by_reference' => false, |
||||
// 'edit' => 'inline', |
||||
// 'inline' => 'table', |
||||
// 'admin_code' => 'sonata.admin.user_field_values' |
||||
// /* 'edit' => 'inline', |
||||
// 'inline' => 'table', |
||||
// 'sortable' => 'position',*/ |
||||
// ) |
||||
// ) |
||||
// ->end() |
||||
// ->end(); |
||||
|
||||
} |
||||
|
||||
/** |
||||
* @param DatagridMapper $datagridMapper |
||||
*/ |
||||
protected function configureDatagridFilters(DatagridMapper $datagridMapper) |
||||
{ |
||||
$datagridMapper |
||||
->add('username') |
||||
->add('firstname') |
||||
->add('lastname') |
||||
->add('email') |
||||
->add('officialCode') |
||||
->add('groups') |
||||
->add( |
||||
'active' |
||||
)//->add('registrationDate', 'sonata_type_filter_datetime', array('input_type' => 'timestamp')) |
||||
; |
||||
} |
||||
} |
||||
|
||||
@ -0,0 +1,67 @@ |
||||
<?php |
||||
|
||||
namespace Chamilo\UserBundle\Admin; |
||||
|
||||
use Sonata\AdminBundle\Admin\Admin; |
||||
use Sonata\AdminBundle\Form\FormMapper; |
||||
use Sonata\AdminBundle\Datagrid\DatagridMapper; |
||||
use Sonata\AdminBundle\Datagrid\ListMapper; |
||||
use Sonata\AdminBundle\Show\ShowMapper; |
||||
|
||||
|
||||
/** |
||||
* Class UserAdmin |
||||
* @package Chamilo\UserBundle\Admin |
||||
*/ |
||||
class UserField extends Admin |
||||
{ |
||||
/** |
||||
* @param FormMapper $formMapper |
||||
*/ |
||||
protected function configureFormFields(FormMapper $formMapper) |
||||
{ |
||||
$formMapper |
||||
->add('field_type', 'text') |
||||
->add('field_variable', 'text') |
||||
->add('field_display_text', 'text') |
||||
->add('field_default_value', 'text') |
||||
->add('field_order', 'text') |
||||
->add('field_visible', 'text') |
||||
->add('field_changeable', 'text') |
||||
->add('field_filter', 'text') |
||||
->add('field_loggeable', 'text') |
||||
->add('configuration'); |
||||
} |
||||
|
||||
/** |
||||
* @param ShowMapper $showMapper |
||||
*/ |
||||
protected function configureShowField(ShowMapper $showMapper) |
||||
{ |
||||
$showMapper |
||||
->add('id', 'text') |
||||
->add('field_type', 'text') |
||||
->add('field_variable', 'text'); |
||||
} |
||||
|
||||
/** |
||||
* @param DatagridMapper $datagridMapper |
||||
*/ |
||||
protected function configureDatagridFilters(DatagridMapper $datagridMapper) |
||||
{ |
||||
/*$datagridMapper |
||||
->add('field_type') |
||||
;*/ |
||||
} |
||||
|
||||
/** |
||||
* @param ListMapper $listMapper |
||||
*/ |
||||
protected function configureListFields(ListMapper $listMapper) |
||||
{ |
||||
$listMapper |
||||
->addIdentifier('id') |
||||
->add('field_variable', 'text') |
||||
->add('field_type', 'text'); |
||||
} |
||||
} |
||||
@ -0,0 +1,60 @@ |
||||
<?php |
||||
|
||||
namespace Chamilo\UserBundle\Admin; |
||||
|
||||
use Sonata\AdminBundle\Admin\Admin; |
||||
use Sonata\AdminBundle\Form\FormMapper; |
||||
use Sonata\AdminBundle\Datagrid\DatagridMapper; |
||||
use Sonata\AdminBundle\Datagrid\ListMapper; |
||||
use Sonata\AdminBundle\Show\ShowMapper; |
||||
|
||||
|
||||
/** |
||||
* Class UserAdmin |
||||
* @package Chamilo\UserBundle\Admin |
||||
*/ |
||||
class UserFieldValuesAdmin extends Admin |
||||
{ |
||||
/** |
||||
* @param FormMapper $formMapper |
||||
*/ |
||||
protected function configureFormFields(FormMapper $formMapper) |
||||
{ |
||||
$formMapper |
||||
->add('field') |
||||
->add('user') |
||||
->add('field_value', 'text') |
||||
->add('comment', 'textarea') |
||||
->add('author'); |
||||
} |
||||
|
||||
/** |
||||
* @param ShowMapper $showMapper |
||||
*/ |
||||
protected function configureShowField(ShowMapper $showMapper) |
||||
{ |
||||
$showMapper |
||||
->add('id', 'text'); |
||||
} |
||||
|
||||
/** |
||||
* @param DatagridMapper $datagridMapper |
||||
*/ |
||||
protected function configureDatagridFilters(DatagridMapper $datagridMapper) |
||||
{ |
||||
$datagridMapper |
||||
->add('id') |
||||
->add('field'); |
||||
} |
||||
|
||||
/** |
||||
* @param ListMapper $listMapper |
||||
*/ |
||||
protected function configureListFields(ListMapper $listMapper) |
||||
{ |
||||
$listMapper |
||||
->addIdentifier('id') |
||||
->addIdentifier('field') |
||||
->addIdentifier('user'); |
||||
} |
||||
} |
||||
@ -0,0 +1,21 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\UserBundle; |
||||
|
||||
use Symfony\Component\HttpKernel\Bundle\Bundle; |
||||
|
||||
/** |
||||
* Class ChamiloUserBundle |
||||
* @package Chamilo\UserBundle |
||||
*/ |
||||
class ChamiloUserBundle extends Bundle |
||||
{ |
||||
/** |
||||
* {@inheritdoc} |
||||
*/ |
||||
public function getParent() |
||||
{ |
||||
return 'SonataUserBundle'; |
||||
} |
||||
} |
||||
@ -0,0 +1,26 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\UserBundle\DependencyInjection; |
||||
|
||||
use Symfony\Component\DependencyInjection\ContainerBuilder; |
||||
use Symfony\Component\Config\FileLocator; |
||||
use Symfony\Component\HttpKernel\DependencyInjection\Extension; |
||||
use Symfony\Component\DependencyInjection\Loader; |
||||
|
||||
/** |
||||
* This is the class that loads and manages your bundle configuration |
||||
* |
||||
* To learn more see {@link http://symfony.com/doc/current/cookbook/bundles/extension.html} |
||||
*/ |
||||
class ChamiloUserExtension extends Extension |
||||
{ |
||||
/** |
||||
* {@inheritDoc} |
||||
*/ |
||||
public function load(array $configs, ContainerBuilder $container) |
||||
{ |
||||
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); |
||||
$loader->load('admin.yml'); |
||||
} |
||||
} |
||||
@ -0,0 +1,24 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\UserBundle\Repository; |
||||
|
||||
use Doctrine\ORM\EntityRepository; |
||||
|
||||
/** |
||||
* Class GroupRepository |
||||
* @package Entity\Repository |
||||
*/ |
||||
class GroupRepository extends EntityRepository |
||||
{ |
||||
/** |
||||
* @return mixed |
||||
*/ |
||||
public function getAdmins() |
||||
{ |
||||
$criteria = array('name' => 'admins'); |
||||
$group = $this->findOneBy($criteria); |
||||
|
||||
return $group->getUsers(); |
||||
} |
||||
} |
||||
@ -0,0 +1,354 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\UserBundle\Repository; |
||||
|
||||
use Chamilo\CoreBundle\Entity\AccessUrl; |
||||
use Doctrine\ORM\EntityRepository; |
||||
use \Doctrine\Common\Collections\Criteria; |
||||
use \Chamilo\CoreBundle\Entity\Session; |
||||
use \Chamilo\CoreBundle\Entity\Course; |
||||
use \Doctrine\ORM\Query\Expr\Join; |
||||
use \Chamilo\CoreBundle\Entity\SessionRelCourseRelUser; |
||||
use \Chamilo\UserBundle\Entity\User; |
||||
|
||||
//use Symfony\Component\Security\Core\Exception\UsernameNotFoundException; |
||||
//use Symfony\Component\Security\Core\Exception\UnsupportedUserException; |
||||
|
||||
/** |
||||
* Class UserRepository |
||||
* |
||||
* All functions that query the database (selects) |
||||
* Functions should return query builders. |
||||
* |
||||
* @package Chamilo\UserBundle\Repository |
||||
*/ |
||||
class UserRepository extends EntityRepository |
||||
{ |
||||
/** |
||||
* @param string $keyword |
||||
* |
||||
* @return mixed |
||||
*/ |
||||
public function searchUserByKeyword($keyword) |
||||
{ |
||||
$qb = $this->createQueryBuilder('a'); |
||||
|
||||
// Selecting user info |
||||
$qb->select('DISTINCT b'); |
||||
|
||||
$qb->from('Chamilo\UserBundle\Entity\User', 'b'); |
||||
|
||||
// Selecting courses for users |
||||
//$qb->innerJoin('u.courses', 'c'); |
||||
|
||||
//@todo check app settings |
||||
$qb->add('orderBy', 'b.firstname ASC'); |
||||
$qb->where('b.firstname LIKE :keyword OR b.lastname LIKE :keyword '); |
||||
$qb->setParameter('keyword', "%$keyword%"); |
||||
$query = $qb->getQuery(); |
||||
|
||||
return $query->execute(); |
||||
} |
||||
|
||||
/** |
||||
* @param string $role |
||||
* @return array |
||||
*/ |
||||
public function findByRole($role) |
||||
{ |
||||
$em = $this->getEntityManager(); |
||||
$qb = $em->createQueryBuilder(); |
||||
|
||||
$qb->select('u') |
||||
->from($this->_entityName, 'u') |
||||
->where('u.roles LIKE :roles') |
||||
->setParameter('roles', '%"'.$role.'"%'); |
||||
|
||||
return $qb->getQuery()->getResult(); |
||||
} |
||||
|
||||
/** |
||||
* Get course user relationship based in the course_rel_user table. |
||||
* @return array |
||||
*/ |
||||
/*public function getCourses(User $user) |
||||
{ |
||||
$queryBuilder = $this->createQueryBuilder('user'); |
||||
|
||||
// Selecting course info. |
||||
$queryBuilder->select('c'); |
||||
|
||||
// Loading User. |
||||
//$qb->from('Chamilo\UserBundle\Entity\User', 'u'); |
||||
|
||||
// Selecting course |
||||
$queryBuilder->innerJoin('Chamilo\CoreBundle\Entity\Course', 'c'); |
||||
|
||||
//@todo check app settings |
||||
//$qb->add('orderBy', 'u.lastname ASC'); |
||||
|
||||
$wherePart = $queryBuilder->expr()->andx(); |
||||
|
||||
// Get only users subscribed to this course |
||||
$wherePart->add($queryBuilder->expr()->eq('user.userId', $user->getUserId())); |
||||
|
||||
$queryBuilder->where($wherePart); |
||||
$query = $queryBuilder->getQuery(); |
||||
|
||||
return $query->execute(); |
||||
} |
||||
|
||||
public function getTeachers() |
||||
{ |
||||
$queryBuilder = $this->createQueryBuilder('u'); |
||||
|
||||
// Selecting course info. |
||||
$queryBuilder |
||||
->select('u') |
||||
->where('u.groups.id = :groupId') |
||||
->setParameter('groupId', 1); |
||||
|
||||
$query = $queryBuilder->getQuery(); |
||||
|
||||
return $query->execute(); |
||||
}*/ |
||||
|
||||
/*public function getUsers($group) |
||||
{ |
||||
$queryBuilder = $this->createQueryBuilder('u'); |
||||
|
||||
// Selecting course info. |
||||
$queryBuilder |
||||
->select('u') |
||||
->where('u.groups = :groupId') |
||||
->setParameter('groupId', $group); |
||||
|
||||
$query = $queryBuilder->getQuery(); |
||||
|
||||
return $query->execute(); |
||||
}*/ |
||||
|
||||
/** |
||||
* Get a filtered list of user by status and (optionally) access url |
||||
* @todo not use status |
||||
* |
||||
* @param string $query The query to filter |
||||
* @param int $status The status |
||||
* @param int $accessUrlId The access URL ID |
||||
* @return array |
||||
*/ |
||||
public function searchUsersByStatus($query, $status, $accessUrlId = null) |
||||
{ |
||||
$accessUrlId = intval($accessUrlId); |
||||
|
||||
$queryBuilder = $this->createQueryBuilder('u'); |
||||
|
||||
if ($accessUrlId > 0) { |
||||
$queryBuilder->innerJoin( |
||||
'ChamiloCoreBundle:AccessUrlRelUser', |
||||
'auru', |
||||
\Doctrine\ORM\Query\Expr\Join::WITH, |
||||
'u.id = auru.userId' |
||||
); |
||||
} |
||||
|
||||
$queryBuilder->where('u.status = :status') |
||||
->andWhere('u.username LIKE :query OR u.firstname LIKE :query OR u.lastname LIKE :query') |
||||
->setParameter('status', $status) |
||||
->setParameter('query', "$query%"); |
||||
|
||||
if ($accessUrlId > 0) { |
||||
$queryBuilder->andWhere('auru.accessUrlId = :url') |
||||
->setParameter(':url', $accessUrlId); |
||||
} |
||||
|
||||
return $queryBuilder->getQuery()->getResult(); |
||||
} |
||||
|
||||
/** |
||||
* Get the coaches for a course within a session |
||||
* @param Session $session The session |
||||
* @param Course $course The course |
||||
* @return \Doctrine\ORM\QueryBuilder |
||||
*/ |
||||
public function getCoachesForSessionCourse(Session $session, Course $course) |
||||
{ |
||||
$queryBuilder = $this->createQueryBuilder('u'); |
||||
|
||||
$queryBuilder->select('u') |
||||
->innerJoin( |
||||
'ChamiloCoreBundle:SessionRelCourseRelUser', |
||||
'scu', |
||||
Join::WITH, |
||||
'scu.user = u' |
||||
) |
||||
->where( |
||||
$queryBuilder->expr()->andX( |
||||
$queryBuilder->expr()->eq('scu.session', $session->getId()), |
||||
$queryBuilder->expr()->eq('scu.course', $course->getId()), |
||||
$queryBuilder->expr()->eq('scu.status', SessionRelCourseRelUser::STATUS_COURSE_COACH) |
||||
) |
||||
); |
||||
|
||||
return $queryBuilder->getQuery()->getResult(); |
||||
} |
||||
|
||||
/** |
||||
* Get course user relationship based in the course_rel_user table. |
||||
* @return array |
||||
*/ |
||||
/*public function getCourses(User $user) |
||||
{ |
||||
$queryBuilder = $this->createQueryBuilder('user'); |
||||
|
||||
// Selecting course info. |
||||
$queryBuilder->select('c'); |
||||
|
||||
// Loading User. |
||||
//$qb->from('Chamilo\UserBundle\Entity\User', 'u'); |
||||
|
||||
// Selecting course |
||||
$queryBuilder->innerJoin('Chamilo\CoreBundle\Entity\Course', 'c'); |
||||
|
||||
//@todo check app settings |
||||
//$qb->add('orderBy', 'u.lastname ASC'); |
||||
|
||||
$wherePart = $queryBuilder->expr()->andx(); |
||||
|
||||
// Get only users subscribed to this course |
||||
$wherePart->add($queryBuilder->expr()->eq('user.userId', $user->getUserId())); |
||||
|
||||
$queryBuilder->where($wherePart); |
||||
$query = $queryBuilder->getQuery(); |
||||
|
||||
return $query->execute(); |
||||
} |
||||
|
||||
public function getTeachers() |
||||
{ |
||||
$queryBuilder = $this->createQueryBuilder('u'); |
||||
|
||||
// Selecting course info. |
||||
$queryBuilder |
||||
->select('u') |
||||
->where('u.groups.id = :groupId') |
||||
->setParameter('groupId', 1); |
||||
|
||||
$query = $queryBuilder->getQuery(); |
||||
|
||||
return $query->execute(); |
||||
}*/ |
||||
|
||||
/*public function getUsers($group) |
||||
{ |
||||
$queryBuilder = $this->createQueryBuilder('u'); |
||||
|
||||
// Selecting course info. |
||||
$queryBuilder |
||||
->select('u') |
||||
->where('u.groups = :groupId') |
||||
->setParameter('groupId', $group); |
||||
|
||||
$query = $queryBuilder->getQuery(); |
||||
|
||||
return $query->execute(); |
||||
}*/ |
||||
|
||||
/** |
||||
* Get the sessions admins for a user |
||||
* @param \Chamilo\UserBundle\Entity\User $user The user |
||||
* @return array |
||||
*/ |
||||
public function getSessionAdmins(User $user) |
||||
{ |
||||
$queryBuilder = $this->createQueryBuilder('u'); |
||||
$queryBuilder |
||||
->distinct() |
||||
->innerJoin( |
||||
'ChamiloCoreBundle:SessionRelUser', |
||||
'su', |
||||
Join::WITH, |
||||
$queryBuilder->expr()->eq('u', 'su.user') |
||||
) |
||||
->innerJoin( |
||||
'ChamiloCoreBundle:SessionRelCourseRelUser', |
||||
'scu', |
||||
Join::WITH, |
||||
$queryBuilder->expr()->eq('su.session', 'scu.session') |
||||
) |
||||
->where( |
||||
$queryBuilder->expr()->eq('scu.user', $user->getId()) |
||||
) |
||||
->andWhere( |
||||
$queryBuilder->expr()->eq('su.relationType', SESSION_RELATION_TYPE_RRHH) |
||||
) |
||||
; |
||||
|
||||
return $queryBuilder->getQuery()->getResult(); |
||||
} |
||||
|
||||
/** |
||||
* Get the student bosses for a user |
||||
* @param User $user The user |
||||
* @return array |
||||
*/ |
||||
public function getStudentBosses(User $user) |
||||
{ |
||||
$queryBuilder = $this->createQueryBuilder('u'); |
||||
$queryBuilder |
||||
->distinct() |
||||
->innerJoin( |
||||
'ChamiloCoreBundle:UserRelUser', |
||||
'uu', |
||||
Join::WITH, |
||||
$queryBuilder->expr()->eq('u.id', 'uu.friendUserId') |
||||
) |
||||
->where( |
||||
$queryBuilder->expr()->eq('uu.relationType', USER_RELATION_TYPE_BOSS) |
||||
) |
||||
->andWhere( |
||||
$queryBuilder->expr()->eq('uu.userId', $user->getId()) |
||||
); |
||||
|
||||
return $queryBuilder->getQuery()->getResult(); |
||||
} |
||||
|
||||
/** |
||||
* Get number of users in URL |
||||
* @param AccessUrl $url |
||||
* |
||||
* @return int |
||||
*/ |
||||
public function getCountUsersByUrl(AccessUrl $url) |
||||
{ |
||||
return $this->createQueryBuilder('a') |
||||
->select('COUNT(a)') |
||||
->innerJoin('a.portals', 'u') |
||||
->where('u.portal = :u') |
||||
->setParameters(['u' => $url]) |
||||
->getQuery() |
||||
->getSingleScalarResult(); |
||||
} |
||||
|
||||
/** |
||||
* Get number of users in URL |
||||
* @param AccessUrl $url |
||||
* |
||||
* @return int |
||||
*/ |
||||
public function getCountTeachersByUrl(AccessUrl $url) |
||||
{ |
||||
$qb = $this->createQueryBuilder('a'); |
||||
|
||||
return $qb |
||||
->select('COUNT(a)') |
||||
->innerJoin('a.portals', 'u') |
||||
->where('u.portal = :u and u.group = :g') |
||||
->andWhere($qb->expr()->in('a.roles', ['ROLE_TEACHER'])) |
||||
->setParameters(['u' => $url, 'g' => $group]) |
||||
->getQuery() |
||||
->getSingleScalarResult() |
||||
; |
||||
} |
||||
} |
||||
@ -0,0 +1,15 @@ |
||||
parameters: |
||||
sonata.user.admin.groupname: sonata_user |
||||
sonata.user.admin.label_catalogue: ChamiloUserBundle |
||||
sonata.user.admin.groupicon: '<i class=''fa fa-users''></i>' |
||||
|
||||
services: |
||||
sonata.user.admin.user: |
||||
class: Chamilo\UserBundle\Admin\UserAdmin |
||||
tags: |
||||
- { name: sonata.admin, manager_type: orm, audit:true, group: 'LMS', label: users, label_catalogue: '%sonata.user.admin.label_catalogue%', label_translator_strategy: sonata.admin.label.strategy.underscore, icon: '%sonata.user.admin.groupicon%' } |
||||
|
||||
arguments: ['', Chamilo\UserBundle\Entity\User, '%sonata.user.admin.user.controller%'] |
||||
calls: |
||||
- [setUserManager, ['@fos_user.user_manager']] |
||||
- [setTranslationDomain, ['%sonata.user.admin.user.translation_domain%']] |
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue