/** * Package a module * @param string $module * @return string */ protected function packageModuleAction($module = 'core') { \tools::rmdir('var/pack/'); \tools::copy_dir('modules/' . $module . '/', 'var/pack/' . $module . '/'); /* If this module has a profile, retrieve profile */ if (is_dir('profiles/' . PROFILE . '/modules/' . $module . '/')) { /* Remove concats */ $concats = glob('profiles/' . PROFILE . '/modules/' . $module . '/*concat_*'); if (is_array($concats) && !empty($concats)) { foreach ($concats as $file) { unlink($file); } } \tools::copy_dir('profiles/' . PROFILE . '/modules/' . $module . '/', 'var/pack/' . $module . '/'); } /* Clean rights: keep only default rights */ /* Module Rights */ $objModule = \app::getModule($module); $rolesToRemove = array(); foreach (\app::getModule('core')->getEntity('role')->where('id_role > 4') as $role) { $rolesToRemove[] = $role->id_role; $objModule->setRights($role->id_role, 1); } \tools::serialize('var/pack/' . $module . '/module', $objModule); /* Pages rights */ foreach ($objModule->getPages() as $page) { foreach ($rolesToRemove as $idRole) { $page->setRights($idRole, 1); } \tools::serialize('var/pack/' . $module . '/pages/' . $page->getId(), $page); } /* Model rights */ foreach ($objModule->getModel() as $entity) { foreach ($rolesToRemove as $idRole) { $entity->setRights($idRole, 15); foreach ($entity->getFields() as $field) { $field->setRights($idRole, 7); } } \tools::serialize('var/pack/' . $module . '/model/' . $entity->getName(), $entity); } /* generate and send Zip to client */ $phar = new \PharData('profiles/' . PROFILE . '/modules/' . $module . '.zip'); $phar->buildFromDirectory('./var/pack'); \app::$response->setHeader('Content-type', 'application/zip'); return 'profiles/' . PROFILE . '/modules/' . $module . '.zip'; }
/** * Save the module * @return bool */ public function save() { return \tools::serialize(PROFILE_PATH . $this->moduleName . '/pages/' . $this->getId(), $this); }
/** * Save the module * @return bool */ public function save() { return \tools::serialize(PROFILE_PATH . $this->name . '/module', $this); }
/** * Put content in file.obj * @return string */ public function save() { return \tools::serialize('modules/' . $this->_module . '/model/' . $this->_entityName, $this); }