ما الجديد
مرحبا بك زائرنا الكريم في موقع شقاوي للتصميم والبرمجة اذا كانت هذه زيارتك اﻻولى فنتشرف بانضمامك لنا وان كنت احد كوكبة اعضائنا فأهلا بعودتك مرة أخرى
اضافة همسات

اضافة همسات 1.0.4

لا يوجد تصريح للتنزيل

متابعة فقط عشان ال documentation لاحقا باذن الله ErrorException: [E_WARNING] Attempt to read property "user_id" on null...

متابعة فقط عشان ال documentation لاحقا باذن الله


كود:
ErrorException: [E_WARNING] Attempt to read property "user_id" on null src/addons/shqawe/Whispers/Entity/WhisperEntity.php:35
Generated by: 
Stack trace
#0 src/addons/shqawe/Whispers/Entity/WhisperEntity.php(35): XF::handlePhpError(2, '[E_WARNING] Att...', '/home/site/p...', 35)
#1 src/XF/Mvc/Entity/Entity.php(1330): shqawe\Whispers\Entity\WhisperEntity->_postSave()
#2 src/addons/shqawe/Whispers/Pub/Controller/WhisperController.php(154): XF\Mvc\Entity\Entity->save()
#3 src/addons/shqawe/Whispers/Pub/Controller/WhisperController.php(134): shqawe\Whispers\Pub\Controller\WhisperController->pageSaveProcess()
#4 src/XF/Mvc/Dispatcher.php(362): shqawe\Whispers\Pub\Controller\WhisperController->actionSave(Object(XF\Mvc\ParameterBag))
#5 src/XF/Mvc/Dispatcher.php(265): XF\Mvc\Dispatcher->dispatchClass('shqawe\\Whispers...', 'Save', Object(XF\Mvc\RouteMatch), Object(shqawe\Whispers\Pub\Controller\WhisperController), NULL)
#6 src/XF/Mvc/Dispatcher.php(121): XF\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Mvc\RouteMatch), Object(shqawe\Whispers\Pub\Controller\WhisperController), NULL)
#7 src/XF/Mvc/Dispatcher.php(63): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#8 src/XF/App.php(2824): XF\Mvc\Dispatcher->run()
#9 src/XF.php(814): XF\App->run()
#10 index.php(23): XF::runApp('XF\\Pub\\App')
#11 {main}
 
ممتاز جدا ً وبالعكس اضافة اﻻخطاء اللي تظهر في الموضوع تسهل حل المشكلة وتسريع اطلاق التحديث باذن الله

بيض الله وجهك ياﻻمير 🙏
 
اخوي شقاوي اعتذر منك على الازعاج. يظهر لدي هذا الخطا ولا يمكن الابلاغ عن همسه والموضوع انتقائي يحصل لبعض البلاغات فقط


كود:
ErrorException: [E_WARNING] Attempt to read property "user_id" on null in src/addons/shqawe/Whispers/Report/WhiperHandler.php at line 32
XF::handlePhpError() in src/addons/shqawe/Whispers/Report/WhiperHandler.php at line 32
shqawe\Whispers\Report\WhiperHandler->setupReportEntityContent() in src/XF/Service/Report/CreatorService.php at line 86
XF\Service\Report\CreatorService->createReport() in src/XF/Service/Report/CreatorService.php at line 53
XF\Service\Report\CreatorService->__construct() in src/XF/Container.php at line 292
XF\Container->createObject() in src/XF/App.php at line 1967
XF\App->XF\{closure}() in src/XF/Container.php at line 250
XF\Container->create() in src/XF/App.php at line 3548
XF\App->service() in src/XF/Mvc/Controller.php at line 890
XF\Mvc\Controller->service() in src/XF/ControllerPlugin/AbstractPlugin.php at line 64
XF\ControllerPlugin\AbstractPlugin->__call() in src/XF/ControllerPlugin/ReportPlugin.php at line 26
XF\ControllerPlugin\ReportPlugin->setupReportCreate() in src/XF/ControllerPlugin/ReportPlugin.php at line 47
XF\ControllerPlugin\ReportPlugin->actionReport() in src/addons/shqawe/Whispers/XF/Pub/Controller/Account.php at line 61
shqawe\Whispers\XF\Pub\Controller\Account->actionWhisperControlWhisperViewReport() in src/XF/Mvc/Dispatcher.php at line 362
XF\Mvc\Dispatcher->dispatchClass() in src/XF/Mvc/Dispatcher.php at line 264
XF\Mvc\Dispatcher->dispatchFromMatch() in src/XF/Mvc/Dispatcher.php at line 121
XF\Mvc\Dispatcher->dispatchLoop() in src/XF/Mvc/Dispatcher.php at line 63
XF\Mvc\Dispatcher->run() in src/XF/App.php at line 2824
XF\App->run() in src/XF.php at line 814
XF::runApp() in index.php at line 23
 
missing checks:

كود:
public function actionAdd()
{

    if (!\XF::visitor()->hasPermission('WhispersPerms', 'canUseWhispers'))
    {
        return $this->noPermission();
    }

كود:
public function actionSave(ParameterBag $params)
{
   

    if (!\XF::visitor()->hasPermission('WhispersPerms', 'canUseWhispers'))
    {
        return $this->noPermission();
    }
rn $this->noPermission();
    }

Report
كود:
public function setupReportEntityContent(Report $report, Entity $content)
{
    /** @var Whisper $content */
    $user = $content->SenderUser;

    $report->content_user_id = $content->wh_sender_user_id;

    $report->content_info = [
        'message' => $content->wh_msg,
        'conversation_id' => $content->wh_id,
        'user_id' => $user ? $user->user_id : $content->wh_sender_user_id,
        'username' => $user ? $user->username : $content->wh_sender_username,
    ];
}
 
missing checks:

كود:
public function actionAdd()
{

    if (!\XF::visitor()->hasPermission('WhispersPerms', 'canUseWhispers'))
    {
        return $this->noPermission();
    }

كود:
public function actionSave(ParameterBag $params)
{
  

    if (!\XF::visitor()->hasPermission('WhispersPerms', 'canUseWhispers'))
    {
        return $this->noPermission();
    }
rn $this->noPermission();
    }

Report
كود:
public function setupReportEntityContent(Report $report, Entity $content)
{
    /** @var Whisper $content */
    $user = $content->SenderUser;

    $report->content_user_id = $content->wh_sender_user_id;

    $report->content_info = [
        'message' => $content->wh_msg,
        'conversation_id' => $content->wh_id,
        'user_id' => $user ? $user->user_id : $content->wh_sender_user_id,
        'username' => $user ? $user->username : $content->wh_sender_username,
    ];
}
[تعقيب تقني] حول معايير الحماية وهيكلة الصلاحيات في تطوير إضافات همسات**
طرح الملاحظات البرمجية حول "نقص التحققات" (Missing Checks) في إضافة الهمسات. لذا سأقوم بتوضيح رؤيتي التقنية حول هذه النقاط وكيفية التعامل معها برمجياً.
1. ما وراء الـ Permission Checks: الحماية المتعددة الطبقات**
أشار البعض إلى أن استخدام hasPermission بشكل منفرد قد لا يكون كافياً. وهذا صحيح برمجياً؛ ففي إضافه، لا يعتمد فقط على التحقق من الصلاحية العامة، بل يجب أن يتبعها دائماً:
* **Entity Access: ** التحقق من أن المحتوى المراد الوصول إليه "قابل للعرض" (Viewable) من قبل الزائر الحالي.
* **Action Validation:** استخدام assertRegistration للتأكد من هوية المستخدم، و assertNotFlooding لمنع استغلال الثغرات في إغراق قاعدة البيانات (Spamming).
* **Context Check:** التحقق من سياق العملية؛ فهل يحق للمستخدم التفاعل مع محتوى في قسم مغلق أو محمي؟
2. معالجة الـ Entities المفقودة في نظام التبليغات (Report System)**
النقطة التي أثيرت حول setupReportEntityContent هي نقطة جوهرية في استقرار النظام. الاعتماد المباشر على $content->SenderUser دون التحقق من وجود الكائن (Object) قد يؤدي إلى Server Error في حال تم حذف المستخدم.

3. جودة الكود (Clean Code) والتحقق من الصياغة**
الملاحظات حول وجود بقايا كود أو أخطاء كتابية (Syntax Errors) في بعض النسخ هي تنبيه للمطور بضرورة تفعيل بيئة تطوير صارمة.

مهدي حميد .
 
اخوي @Justin اول شيء المعذرة على هالاخطاء ولكن جلّ من لا يخطأ سبحانه وتعالى 🙏

لكن باذن الله راح يتم معالجة هالاخطاء في التحديث القادم باذن الله

اخوي @مهدي حميد اشكرك على التوضيح (y)
 
اخوي @Justin اول شيء المعذرة على هالاخطاء ولكن جلّ من لا يخطأ سبحانه وتعالى 🙏

لكن باذن الله راح يتم معالجة هالاخطاء في التحديث القادم باذن الله

اخوي @مهدي حميد اشكرك على التوضيح (y)
معذور ومستور جعل ربي يطول عمرك اخوي تركي. الكمال لله سبحانه مثل ما تفضلت.

انا اللي المفروض اعتذر منك لاني اشعر اني ازعجتك كل شوي طالع لك بشغله 😅 لكن الاضافة من اجمل الاضافات سلمت يمينك ولا يمكن تحت اي ظرف اتخلى عنها. 😁 تحملني معليش.
 
معذور ومستور جعل ربي يطول عمرك اخوي تركي. الكمال لله سبحانه مثل ما تفضلت.

انا اللي المفروض اعتذر منك لاني اشعر اني ازعجتك كل شوي طالع لك بشغله 😅 لكن الاضافة من اجمل الاضافات سلمت يمينك ولا يمكن تحت اي ظرف اتخلى عنها. 😁 تحملني معليش.

افااا عليك بس لو لا الله سبحانه وتعالى ثم تجاربكم وردودكم واقتراحاتكم على الاضافات اللي اسويها ماكان وصلت الاضافات لهالمستوى

وبالعكس طال عمرك الشغلات اللي مثل هالشغلات تطور من الاضافة وتزيد حمايتها

والله يكتب لك مثل ما دعيت ويقبله يارب

احترامي وتقديري
اخوك
شقاوي
 
عودة
أعلى